AboutActivity.php 383 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099210021012102210321042105210621072108210921102111211221132114211521162117211821192120212121222123212421252126212721282129213021312132213321342135213621372138213921402141214221432144214521462147214821492150215121522153215421552156215721582159216021612162216321642165216621672168216921702171217221732174217521762177217821792180218121822183218421852186218721882189219021912192219321942195219621972198219922002201220222032204220522062207220822092210221122122213221422152216221722182219222022212222222322242225222622272228222922302231223222332234223522362237223822392240224122422243224422452246224722482249225022512252225322542255225622572258225922602261226222632264226522662267226822692270227122722273227422752276227722782279228022812282228322842285228622872288228922902291229222932294229522962297229822992300230123022303230423052306230723082309231023112312231323142315231623172318231923202321232223232324232523262327232823292330233123322333233423352336233723382339234023412342234323442345234623472348234923502351235223532354235523562357235823592360236123622363236423652366236723682369237023712372237323742375237623772378237923802381238223832384238523862387238823892390239123922393239423952396239723982399240024012402240324042405240624072408240924102411241224132414241524162417241824192420242124222423242424252426242724282429243024312432243324342435243624372438243924402441244224432444244524462447244824492450245124522453245424552456245724582459246024612462246324642465246624672468246924702471247224732474247524762477247824792480248124822483248424852486248724882489249024912492249324942495249624972498249925002501250225032504250525062507250825092510251125122513251425152516251725182519252025212522252325242525252625272528252925302531253225332534253525362537253825392540254125422543254425452546254725482549255025512552255325542555255625572558255925602561256225632564256525662567256825692570257125722573257425752576257725782579258025812582258325842585258625872588258925902591259225932594259525962597259825992600260126022603260426052606260726082609261026112612261326142615261626172618261926202621262226232624262526262627262826292630263126322633263426352636263726382639264026412642264326442645264626472648264926502651265226532654265526562657265826592660266126622663266426652666266726682669267026712672267326742675267626772678267926802681268226832684268526862687268826892690269126922693269426952696269726982699270027012702270327042705270627072708270927102711271227132714271527162717271827192720272127222723272427252726272727282729273027312732273327342735273627372738273927402741274227432744274527462747274827492750275127522753275427552756275727582759276027612762276327642765276627672768276927702771277227732774277527762777277827792780278127822783278427852786278727882789279027912792279327942795279627972798279928002801280228032804280528062807280828092810281128122813281428152816281728182819282028212822282328242825282628272828282928302831283228332834283528362837283828392840284128422843284428452846284728482849285028512852285328542855285628572858285928602861286228632864286528662867286828692870287128722873287428752876287728782879288028812882288328842885288628872888288928902891289228932894289528962897289828992900290129022903290429052906290729082909291029112912291329142915291629172918291929202921292229232924292529262927292829292930293129322933293429352936293729382939294029412942294329442945294629472948294929502951295229532954295529562957295829592960296129622963296429652966296729682969297029712972297329742975297629772978297929802981298229832984298529862987298829892990299129922993299429952996299729982999300030013002300330043005300630073008300930103011301230133014301530163017301830193020302130223023302430253026302730283029303030313032303330343035303630373038303930403041304230433044304530463047304830493050305130523053305430553056305730583059306030613062306330643065306630673068306930703071307230733074307530763077307830793080308130823083308430853086308730883089309030913092309330943095309630973098309931003101310231033104310531063107310831093110311131123113311431153116311731183119312031213122312331243125312631273128312931303131313231333134313531363137313831393140314131423143314431453146314731483149315031513152315331543155315631573158315931603161316231633164316531663167316831693170317131723173317431753176317731783179318031813182318331843185318631873188318931903191319231933194319531963197319831993200320132023203320432053206320732083209321032113212321332143215321632173218321932203221322232233224322532263227322832293230323132323233323432353236323732383239324032413242324332443245324632473248324932503251325232533254325532563257325832593260326132623263326432653266326732683269327032713272327332743275327632773278327932803281328232833284328532863287328832893290329132923293329432953296329732983299330033013302330333043305330633073308330933103311331233133314331533163317331833193320332133223323332433253326332733283329333033313332333333343335333633373338333933403341334233433344334533463347334833493350335133523353335433553356335733583359336033613362336333643365336633673368336933703371337233733374337533763377337833793380338133823383338433853386338733883389339033913392339333943395339633973398339934003401340234033404340534063407340834093410341134123413341434153416341734183419342034213422342334243425342634273428342934303431343234333434343534363437343834393440344134423443344434453446344734483449345034513452345334543455345634573458345934603461346234633464346534663467346834693470347134723473347434753476347734783479348034813482348334843485348634873488348934903491349234933494349534963497349834993500350135023503350435053506350735083509351035113512351335143515351635173518351935203521352235233524352535263527352835293530353135323533353435353536353735383539354035413542354335443545354635473548354935503551355235533554355535563557355835593560356135623563356435653566356735683569357035713572357335743575357635773578357935803581358235833584358535863587358835893590359135923593359435953596359735983599360036013602360336043605360636073608360936103611361236133614361536163617361836193620362136223623362436253626362736283629363036313632363336343635363636373638363936403641364236433644364536463647364836493650365136523653365436553656365736583659366036613662366336643665366636673668366936703671367236733674367536763677367836793680368136823683368436853686368736883689369036913692369336943695369636973698369937003701370237033704370537063707370837093710371137123713371437153716371737183719372037213722372337243725372637273728372937303731373237333734373537363737373837393740374137423743374437453746374737483749375037513752375337543755375637573758375937603761376237633764376537663767376837693770377137723773377437753776377737783779378037813782378337843785378637873788378937903791379237933794379537963797379837993800380138023803380438053806380738083809381038113812381338143815381638173818381938203821382238233824382538263827382838293830383138323833383438353836383738383839384038413842384338443845384638473848384938503851385238533854385538563857385838593860386138623863386438653866386738683869387038713872387338743875387638773878387938803881388238833884388538863887388838893890389138923893389438953896389738983899390039013902390339043905390639073908390939103911391239133914391539163917391839193920392139223923392439253926392739283929393039313932393339343935393639373938393939403941394239433944394539463947394839493950395139523953395439553956395739583959396039613962396339643965396639673968396939703971397239733974397539763977397839793980398139823983398439853986398739883989399039913992399339943995399639973998399940004001400240034004400540064007400840094010401140124013401440154016401740184019402040214022402340244025402640274028402940304031403240334034403540364037403840394040404140424043404440454046404740484049405040514052405340544055405640574058405940604061406240634064406540664067406840694070407140724073407440754076407740784079408040814082408340844085408640874088408940904091409240934094409540964097409840994100410141024103410441054106410741084109411041114112411341144115411641174118411941204121412241234124412541264127412841294130413141324133413441354136413741384139414041414142414341444145414641474148414941504151415241534154415541564157415841594160416141624163416441654166416741684169417041714172417341744175417641774178417941804181418241834184418541864187418841894190419141924193419441954196419741984199420042014202420342044205420642074208420942104211421242134214421542164217421842194220422142224223422442254226422742284229423042314232423342344235423642374238423942404241424242434244424542464247424842494250425142524253425442554256425742584259426042614262426342644265426642674268426942704271427242734274427542764277427842794280428142824283428442854286428742884289429042914292429342944295429642974298429943004301430243034304430543064307430843094310431143124313431443154316431743184319432043214322432343244325432643274328432943304331433243334334433543364337433843394340434143424343434443454346434743484349435043514352435343544355435643574358435943604361436243634364436543664367436843694370437143724373437443754376437743784379438043814382438343844385438643874388438943904391439243934394439543964397439843994400440144024403440444054406440744084409441044114412441344144415441644174418441944204421442244234424442544264427442844294430443144324433443444354436443744384439444044414442444344444445444644474448444944504451445244534454445544564457445844594460446144624463446444654466446744684469447044714472447344744475447644774478447944804481448244834484448544864487448844894490449144924493449444954496449744984499450045014502450345044505450645074508450945104511451245134514451545164517451845194520452145224523452445254526452745284529453045314532453345344535453645374538453945404541454245434544454545464547454845494550455145524553455445554556455745584559456045614562456345644565456645674568456945704571457245734574457545764577457845794580458145824583458445854586458745884589459045914592459345944595459645974598459946004601460246034604460546064607460846094610461146124613461446154616461746184619462046214622462346244625462646274628462946304631463246334634463546364637463846394640464146424643464446454646464746484649465046514652465346544655465646574658465946604661466246634664466546664667466846694670467146724673467446754676467746784679468046814682468346844685468646874688468946904691469246934694469546964697469846994700470147024703470447054706470747084709471047114712471347144715471647174718471947204721472247234724472547264727472847294730473147324733473447354736473747384739474047414742474347444745474647474748474947504751475247534754475547564757475847594760476147624763476447654766476747684769477047714772477347744775477647774778477947804781478247834784478547864787478847894790479147924793479447954796479747984799480048014802480348044805480648074808480948104811481248134814481548164817481848194820482148224823482448254826482748284829483048314832483348344835483648374838483948404841484248434844484548464847484848494850485148524853485448554856485748584859486048614862486348644865486648674868486948704871487248734874487548764877487848794880488148824883488448854886488748884889489048914892489348944895489648974898489949004901490249034904490549064907490849094910491149124913491449154916491749184919492049214922492349244925492649274928492949304931493249334934493549364937493849394940494149424943494449454946494749484949495049514952495349544955495649574958495949604961496249634964496549664967496849694970497149724973497449754976497749784979498049814982498349844985498649874988498949904991499249934994499549964997499849995000500150025003500450055006500750085009501050115012501350145015501650175018501950205021502250235024502550265027502850295030503150325033503450355036503750385039504050415042504350445045504650475048504950505051505250535054505550565057505850595060506150625063506450655066506750685069507050715072507350745075507650775078507950805081508250835084508550865087508850895090509150925093509450955096509750985099510051015102510351045105510651075108510951105111511251135114511551165117511851195120512151225123512451255126512751285129513051315132513351345135513651375138513951405141514251435144514551465147514851495150515151525153515451555156515751585159516051615162516351645165516651675168516951705171517251735174517551765177517851795180518151825183518451855186518751885189519051915192519351945195519651975198519952005201520252035204520552065207520852095210521152125213521452155216521752185219522052215222522352245225522652275228522952305231523252335234523552365237523852395240524152425243524452455246524752485249525052515252525352545255525652575258525952605261526252635264526552665267526852695270527152725273527452755276527752785279528052815282528352845285528652875288528952905291529252935294529552965297529852995300530153025303530453055306530753085309531053115312531353145315531653175318531953205321532253235324532553265327532853295330533153325333533453355336533753385339534053415342534353445345534653475348534953505351535253535354535553565357535853595360536153625363536453655366536753685369537053715372537353745375537653775378537953805381538253835384538553865387538853895390539153925393539453955396539753985399540054015402540354045405540654075408540954105411541254135414541554165417541854195420542154225423542454255426542754285429543054315432543354345435543654375438543954405441544254435444544554465447544854495450545154525453545454555456545754585459546054615462546354645465546654675468546954705471547254735474547554765477547854795480548154825483548454855486548754885489549054915492549354945495549654975498549955005501550255035504550555065507550855095510551155125513551455155516551755185519552055215522552355245525552655275528552955305531553255335534553555365537553855395540554155425543554455455546554755485549555055515552555355545555555655575558555955605561556255635564556555665567556855695570557155725573557455755576557755785579558055815582558355845585558655875588558955905591559255935594559555965597559855995600560156025603560456055606560756085609561056115612561356145615561656175618561956205621562256235624562556265627562856295630563156325633563456355636563756385639564056415642564356445645564656475648564956505651565256535654565556565657565856595660566156625663566456655666566756685669567056715672567356745675567656775678567956805681568256835684568556865687568856895690569156925693569456955696569756985699570057015702570357045705570657075708570957105711571257135714571557165717571857195720572157225723572457255726572757285729573057315732573357345735573657375738573957405741574257435744574557465747574857495750575157525753575457555756575757585759576057615762576357645765576657675768576957705771577257735774577557765777577857795780578157825783578457855786578757885789579057915792579357945795579657975798579958005801580258035804580558065807580858095810581158125813581458155816581758185819582058215822582358245825582658275828582958305831583258335834583558365837583858395840584158425843584458455846584758485849585058515852585358545855585658575858585958605861586258635864586558665867586858695870587158725873587458755876587758785879588058815882588358845885588658875888588958905891589258935894589558965897589858995900590159025903590459055906590759085909591059115912591359145915591659175918591959205921592259235924592559265927592859295930593159325933593459355936593759385939594059415942594359445945594659475948594959505951595259535954595559565957595859595960596159625963596459655966596759685969597059715972597359745975597659775978597959805981598259835984598559865987598859895990599159925993599459955996599759985999600060016002600360046005600660076008600960106011601260136014601560166017601860196020602160226023602460256026602760286029603060316032603360346035603660376038603960406041604260436044604560466047604860496050605160526053605460556056605760586059606060616062606360646065606660676068606960706071607260736074607560766077607860796080608160826083608460856086608760886089609060916092609360946095609660976098609961006101610261036104610561066107610861096110611161126113611461156116611761186119612061216122612361246125612661276128612961306131613261336134613561366137613861396140614161426143614461456146614761486149615061516152615361546155615661576158615961606161616261636164616561666167616861696170617161726173617461756176617761786179618061816182618361846185618661876188618961906191619261936194619561966197619861996200620162026203620462056206620762086209621062116212621362146215621662176218621962206221622262236224622562266227622862296230623162326233623462356236623762386239624062416242624362446245624662476248624962506251625262536254625562566257625862596260626162626263626462656266626762686269627062716272627362746275627662776278627962806281628262836284628562866287628862896290629162926293629462956296629762986299630063016302630363046305630663076308630963106311631263136314631563166317631863196320632163226323632463256326632763286329633063316332633363346335633663376338633963406341634263436344634563466347634863496350635163526353635463556356635763586359636063616362636363646365636663676368636963706371637263736374637563766377637863796380638163826383638463856386638763886389639063916392639363946395639663976398639964006401640264036404640564066407640864096410641164126413641464156416641764186419642064216422642364246425642664276428642964306431643264336434643564366437643864396440644164426443644464456446644764486449645064516452645364546455645664576458645964606461646264636464646564666467646864696470647164726473647464756476647764786479648064816482648364846485648664876488648964906491649264936494649564966497649864996500650165026503650465056506650765086509
  1. <?php
  2. defined('ONLY_ONLY_ONLY') or exit('Access Denied');
  3. /*****************活动即劳资双方因某个工作事项关联起来的活动******************/
  4. /**********************招聘信息相关逻辑**************************************/
  5. function bizbase_recruitEntityHandle($fromSubSystem, $baseUser, $bizUser, $handleMode, $ajaxdata, $GPC)
  6. {
  7. if (intval($baseUser["subsystem"]) == SUBSYS_LABOUR_MINA) {
  8. $bizWorker = $bizUser;
  9. }
  10. if (intval($baseUser["subsystem"]) == SUBSYS_CAPITAL_MINA) {
  11. $bizTrader = $bizUser;
  12. }
  13. if (intval($baseUser["subsystem"]) == SUBSYS_CAPITAL2_MINA) {
  14. $bizTrader2 = $bizUser;
  15. }
  16. switch ($handleMode) {
  17. case "fetchByTrader":
  18. case "fetchByTrader2":
  19. case "fetchByWorker":
  20. case "fetchByPlater":
  21. case "fetchByPublic":
  22. if ($handleMode == "fetchByTrader") {
  23. $bizTrader = $bizUser;
  24. }
  25. if ($handleMode == "fetchByWorker") {
  26. $bizWorker = $bizUser;
  27. }
  28. $bizId = isset($ajaxdata["bizId"]) ? $ajaxdata["bizId"] : $GPC["bizId"];
  29. if (empty($bizId)) {
  30. throw new GeneralException("", "没有传递必要的bizId参数");
  31. }
  32. $backdata = pdo_fetch("select btr.*
  33. ,bt.company_name bt_companyname,bu.mobile as bt_mobile,bt.catalog as bt_catalog,bt.certif_confirmed as bt_certif_confirmed
  34. ,bt.profile_photo as bt_profile_photo , bt.linker_gender as bt_linker_gender ,bt.company_desc as bt_company_desc,bt.nickname as bt_nickname,bt.linker_name as bt_linker_name ,bt.company_addr as bt_company_addr
  35. ,(select concat(id,'-',workteam_mode,'-',workteamid,'-',teamstatus,'-',`status`) from biz_todowork tdwk where tdwk.biz_recruitid=btr.id and tdwk.biz_workerid=:biz_workerid order by id desc limit 1 ) as lasttodowork
  36. ,(select ifnull(avg(result_level),0) from biz_appraisal bapr where bapr.biz_catalog=1 and bapr.toerid=btr.biz_traderid ) as trader_appraisal_avg
  37. ,(select count(*) from biz_todowork btdw where btdw.biz_recruitid=btr.id and ( btdw.`status`>=2 ) ) as now_worker_total
  38. ,(select count(*) from biz_todowork btdw where btdw.biz_recruitid=btr.id and ( btdw.`status`>=1 ) ) as now_worker_total000
  39. ,(select count(*) from biz_todowork btdw where btdw.biz_recruitid=btr.id and ( btdw.`status`=-1 or btdw.`status`=-3 ) ) as num_abnormal_total
  40. ,(select concat(brd.id,'-',brd.begin_datetime,'-',brd.finish_datetime,'-',bt.id,'-',bu.id,'-',bu.mobile,'-',bt.true_name)
  41. from biz_recruit_delegate brd
  42. left join biz_trader2 bt on bt.id=brd.biz_trader2id
  43. left join base_user bu on bu.id=bt.base_userid
  44. where brd.biz_recruitid=:recruitid and brd.finish_datetime>:verify_datetime
  45. limit 1) as delegate_info
  46. from biz_trader_recruit btr
  47. left join biz_trader bt on bt.id=btr.biz_traderid
  48. left join base_user bu on bu.id=bt.base_userid
  49. where btr.id=:recruitid", array(
  50. ":recruitid" => intval($bizId),
  51. ":verify_datetime" => time(),
  52. ":biz_workerid" => empty($bizWorker) ? 0 : $bizWorker["id"],
  53. ));
  54. if (empty($backdata)) {
  55. throw new GeneralException("", "无此记录,请核查bizId是否正确!");
  56. }
  57. if (intval($backdata["deleted"]) != 0) {
  58. throw new GeneralException("", "此记录已删除了,请核查后再处理!");
  59. }
  60. if ($handleMode == "fetchByTrader" && intval($backdata["biz_traderid"]) != intval($bizTrader["id"])) {
  61. throw new GeneralException("", "此记录不是您所拥有的招聘信息,请核查后再处理!");
  62. }
  63. if ($handleMode == "fetchByTrader2") {
  64. bizTrader2_verifyRecuritDelegate($bizTrader2, $backdata["id"]);
  65. }
  66. //----------------------
  67. $lasttodowork = explode("-", $backdata["lasttodowork"]);
  68. $backdata["todoinfo"] = array();
  69. if (!empty($lasttodowork) && count($lasttodowork) == 5) {
  70. $tdwkid = intval($lasttodowork[0]);
  71. $workteam_mode = intval($lasttodowork[1]);
  72. $workteamid = intval($lasttodowork[2]);
  73. $teamstatus = intval($lasttodowork[3]);
  74. $tdwkstatus = intval($lasttodowork[4]);
  75. $backdata["todoinfo"]["tdwkid"] = $tdwkid; //单独取消团组报名 使用
  76. $backdata["todoinfo"]["workteam_mode"] = $workteam_mode;
  77. $backdata["todoinfo"]["workteamid"] = $workteamid; //团长取消团组报名 使用
  78. $backdata["todoinfo"]["teamstatus"] = $teamstatus;
  79. $backdata["todoinfo"]["tdwkstatus"] = $tdwkstatus;
  80. if ($tdwkstatus == 1) {
  81. if ($workteam_mode <= 0) {
  82. $backdata["todoinfo"]["canToEnroll"] = false; //是否可报名
  83. $backdata["todoinfo"]["canCancelEnroll"] = 1; //是否可以取消报名 0-不可;1-单消;2-团消
  84. $backdata["todoinfo"]["remark"] = "单独报名待审核状态,可取消报名"; //相关说明
  85. } else if ($workteam_mode == 1) {
  86. $backdata["todoinfo"]["canToEnroll"] = false;
  87. $backdata["todoinfo"]["canCancelEnroll"] = 2; //0-不可;1-单消;2-团消
  88. $backdata["todoinfo"]["remark"] = "组团报名待审核状态,团长可取消报名";
  89. }
  90. } else if ($tdwkstatus > 1) {
  91. $backdata["todoinfo"]["canToEnroll"] = false;
  92. $backdata["todoinfo"]["canCancelEnroll"] = 0; //0-不可;1-单消;2-团消
  93. $backdata["todoinfo"]["remark"] = "已报名过此招聘,并已进入实际工作阶段";
  94. } else if ($tdwkstatus <= -2 && $tdwkstatus >= -4) { //-2,-3,-4,0
  95. $backdata["todoinfo"]["canToEnroll"] = true;
  96. $backdata["todoinfo"]["canCancelEnroll"] = 0; //0-不可;1-单消;2-团消
  97. $backdata["todoinfo"]["remark"] = "主被动取消或被违约后,可再次报名";
  98. } else if ($tdwkstatus == 0) { //0
  99. if ($workteam_mode <= 0) {
  100. $backdata["todoinfo"]["canToEnroll"] = true;
  101. $backdata["todoinfo"]["canCancelEnroll"] = 0; //0-不可;1-单消;2-团消
  102. $backdata["todoinfo"]["remark"] = "可再次报名11";
  103. } else {
  104. if ($teamstatus >= 1) {
  105. $backdata["todoinfo"]["canToEnroll"] = false;
  106. $backdata["todoinfo"]["canCancelEnroll"] = 0; //0-不可;1-单消;2-团消
  107. $backdata["todoinfo"]["remark"] = "已开参团,不可再次报名";
  108. } else {
  109. $backdata["todoinfo"]["canToEnroll"] = true;
  110. $backdata["todoinfo"]["canCancelEnroll"] = 0; //0-不可;1-单消;2-团消
  111. $backdata["todoinfo"]["remark"] = "可再次报名22";
  112. }
  113. }
  114. } else {
  115. $backdata["todoinfo"]["canToEnroll"] = false;
  116. $backdata["todoinfo"]["canCancelEnroll"] = 0; //0-不可;1-单消;2-团消
  117. $backdata["todoinfo"]["remark"] = "录用被驳回,以及未开始工作,未结束工作等状态,不可再次报名";
  118. }
  119. } else {
  120. if (empty($bizWorker)) {
  121. $backdata["todoinfo"]["canToEnroll"] = false;
  122. $backdata["todoinfo"]["canCancelEnroll"] = 0; //0-不可;1-单消;2-团消
  123. $backdata["todoinfo"]["remark"] = "非会员态";
  124. } else {
  125. $backdata["todoinfo"]["canToEnroll"] = true;
  126. $backdata["todoinfo"]["canCancelEnroll"] = 0; //0-不可;1-单消;2-团消
  127. $backdata["todoinfo"]["remark"] = "还未报名过此招聘";
  128. }
  129. }
  130. //----------------------
  131. $backdata["btr_canTerminate"] = false;
  132. if (intval($backdata["status"]) == 2) {
  133. $backdata["btr_canTerminate"] = true;
  134. }
  135. $backdata["btr_canBreakoff"] = false;
  136. if (
  137. intval($backdata["status"]) >= 2 //提前违约
  138. && ((intval($backdata["settle_catalog"]) == 0
  139. ) || (intval($backdata["settle_catalog"]) > 0
  140. ))
  141. ) {
  142. $backdata["btr_canBreakoff"] = true;
  143. }
  144. $backdata["remarks"] = explode("\n", $backdata["remark"]);
  145. $backdata["remark"] = trim(explode("\n", $backdata["remark"])[0]);
  146. $backdata["trader_appraisal_avg"] = round($backdata["trader_appraisal_avg"], 2);
  147. $delegateInfo = bizbase_recruitDelegateInfo($backdata);
  148. foreach ($delegateInfo as $key => $val) {
  149. $backdata["delegate_" . $key] = $val;
  150. }
  151. unset($backdata["delegate_info"]);
  152. if (intval($backdata["status"]) == -1) {
  153. $backdata["refuseReason"] = trim(explode("\n", $backdata["remark"])[0]);
  154. }
  155. if (intval($backdata["status"]) == 3) {
  156. $backdata["interuptReason"] = trim(explode("\n", $backdata["remark"])[0]);
  157. }
  158. if (intval($backdata["status"]) == 4) {
  159. $backdata["breakdownReason"] = trim(explode("\n", $backdata["remark"])[0]);
  160. }
  161. $backdata["statusName"] = bizbase_recruitStatusName($backdata["status"]);
  162. $backdata["settleModeName"] = intval($backdata["settle_mode"]) <= 0 ? "二维码核销" : "手动核销";
  163. if (!empty($bizWorker)) {
  164. $favorite = pdo_fetchcolumn("select count(*) as count from biz_worker_favorite
  165. where biz_workerid=" . intval($bizWorker["id"]) . " and biz_catalog=0 and biz_id=" . intval($bizId) . ";");
  166. $backdata["favorite"] = (intval($favorite) > 0);
  167. $trace = pdo_fetchcolumn("select count(*) as count from biz_worker_trace
  168. where biz_workerid=" . intval($bizWorker["id"]) . " and biz_catalog=0 and biz_id=" . intval($bizId) . ";");
  169. $backdata["trace"] = (intval($trace) > 0);
  170. }
  171. $now_worker_total = pdo_fetchcolumn("select count(*) from biz_todowork btdw where btdw.biz_recruitid=" . intval($bizId) . " and ( btdw.`status`>=2 );");
  172. $backdata["now_worker_total"] = $now_worker_total;
  173. //-----
  174. $backdata["pickDateList"] = bizbase_recruitWorkLock($bizId, 0, null, function ($recruitId, $planDotime, $bizArgs, $mainRemain, $dateRemain, $restRemain, $pickDateList) {
  175. return $pickDateList;
  176. });
  177. $backdata["begin_datetime22"] = $backdata["begin_datetime"];
  178. if (strtotime(date("Y-m-d", $backdata["begin_datetime22"])) < strtotime(date("Y-m-d", time()))) {
  179. $backdata["begin_datetime22"] = strtotime(date("Y-m-d", time()));
  180. }
  181. $backdata["begin_datetime22"] = date("Y-m-d", $backdata["begin_datetime22"]);
  182. $backdata["restdays"] = "";
  183. if (intval($backdata["finish_datetime"] > strtotime(date("Y-m-d", time())))) {
  184. $backdata["restdays"] = round((intval($backdata["finish_datetime"]) - strtotime(date("Y-m-d", time()))) / 86400);
  185. }
  186. $backdata = bizbase_recruitFieldTrans($fromSubSystem, "BtoF", $backdata);
  187. if ($handleMode == "fetchByPlater") {
  188. //$backdata = bizbase_recruitFieldAttrMap($fromSubSystem,"BtoF",$backdata);
  189. $sqlParam = array();
  190. $sqlParam[":nowtime"] = time();
  191. $sqlParam[":biz_id"] = intval($backdata["id"]);
  192. $sqlTemp = "";
  193. $sqlTemp .= " set @handle_id=0; ";
  194. $sqlTemp .= " select @handle_id:=id from biz_trader_recruit where id=:biz_id and ifnull(readed,0)=0 limit 1;";
  195. $sqlTemp .= " update biz_trader_recruit set `updatetime`=:nowtime,readed=1 where ifnull(@handle_id,0)=0 and id=:biz_id;";
  196. $dataset = pdo_query3($sqlTemp, $sqlParam);
  197. }
  198. if (!empty($bizWorker)) {
  199. $sqlParam = array();
  200. $sqlParam[":nowtime"] = time();
  201. $sqlParam[":biz_id"] = intval($backdata["id"]);
  202. $sqlParam[":biz_workerid"] = intval($bizWorker["id"]);
  203. $sqlTemp = "";
  204. $sqlTemp .= " set @handle_id=0; ";
  205. $sqlTemp .= " select @handle_id:=id from biz_worker_trace where biz_catalog=0 and biz_id=:biz_id and biz_workerid=:biz_workerid limit 1;";
  206. $sqlTemp .= " insert into biz_worker_trace ( `createtime`,`biz_catalog`, `biz_id`, `biz_workerid`, count )";
  207. $sqlTemp .= " select :nowtime, 0, :biz_id, :biz_workerid , 1 from dual where ifnull(@handle_id,0)=0;";
  208. $sqlTemp .= " update biz_worker_trace set `count`=ifnull(count,0)+1 where ifnull(@handle_id,0)<>0 and biz_catalog=0 and biz_id=:biz_id and biz_workerid=:biz_workerid;";
  209. $dataset = pdo_query3($sqlTemp, $sqlParam);
  210. }
  211. $base_config = pdo_fetch("select * from base_config where name = 'enroll_premoney'");
  212. $backdata['base_config'] = $base_config;
  213. //报名列表
  214. $backdata['todo_list'] = [];
  215. if ($backdata['now_worker_total000'] > 0) {
  216. $sql = "select bw.id,bw.profile_photo from biz_trader_recruit as btr
  217. join biz_todowork as bt on btr.id=bt.biz_recruitid and bt.`status`>=1
  218. join biz_worker as bw on bw.id =bt.biz_workerid
  219. where btr.id=:btrid limit 7";
  220. $backdata['todo_list'] = pdo_fetchall($sql, array(
  221. ":btrid" => intval($bizId),
  222. ));
  223. }
  224. return $backdata;
  225. break;
  226. case "pushTop":
  227. $bizId = isset($ajaxdata["bizId"]) ? $ajaxdata["bizId"] : $GPC["bizId"];
  228. if (empty($bizId)) {
  229. throw new GeneralException("", "没有传递必要的bizId参数");
  230. }
  231. $trader = pdo_fetch("select * from biz_trader_recruit where id=" . intval($bizId));
  232. if (empty($trader)) {
  233. throw new GeneralException("", "此id对应的招聘信息记录不存在,请核查bizId是否正确!");
  234. }
  235. if (intval($trader["status"]) != 2) {
  236. throw new GeneralException("", "招聘信息当前不是【进行中】状态,请核查招聘信息实际状态后再处理!");
  237. }
  238. if (intval($trader["deleted"]) != 0) {
  239. throw new GeneralException("", "招聘信息已删除了,请核查招聘信息实际状态后再处理!");
  240. }
  241. $sqlTemp = ""; //不设置remark避免覆盖
  242. $sqlTemp .= " update biz_trader_recruit set updatetime=:nowtime,istop=0 where istop=1;";
  243. $sqlTemp .= " update biz_trader_recruit set updatetime=:nowtime,istop=1 where id=:id;";
  244. $backdata = pdo_query($sqlTemp, array(":nowtime" => time(), ":id" => intval($bizId)));
  245. return $backdata;
  246. break;
  247. case "topHandle":
  248. $todo = isset($ajaxdata["todo"]) ? $ajaxdata["todo"] : $GPC["todo"];
  249. if (empty($todo)) {
  250. throw new GeneralException("", "没有传递必要的todo参数");
  251. }
  252. $bizIds = isset($ajaxdata["bizIds"]) ? $ajaxdata["bizIds"] : $GPC["bizIds"];
  253. $sqlParam = array();
  254. $sqlParam[":nowtime"] = time();
  255. $query = "";
  256. if (is_array($bizIds)) {
  257. $query = "and id in(" . implode(",", $bizIds) . ") ";
  258. }
  259. switch (trim($todo)) {
  260. case "set":
  261. $sqlParam[":istop"] = 1;
  262. break;
  263. case "unset":
  264. $sqlParam[":istop"] = 0;
  265. break;
  266. default:
  267. throw new GeneralException("", "不支持的todo");
  268. }
  269. $sqlTemp = ""; //不设置remark避免覆盖
  270. $sqlTemp .= " update biz_trader_recruit set updatetime=:nowtime,istop=:istop where 1=1 {$query};";
  271. $backdata = pdo_query($sqlTemp, $sqlParam);
  272. return $backdata;
  273. break;
  274. case "downdrop":
  275. $reason = isset($ajaxdata["reason"]) ? $ajaxdata["reason"] : $GPC["reason"];
  276. $bizId = isset($ajaxdata["bizId"]) ? $ajaxdata["bizId"] : $GPC["bizId"];
  277. if (empty($bizId)) {
  278. throw new GeneralException("", "没有传递必要的bizId参数");
  279. }
  280. $recruit = pdo_fetch("select * from biz_trader_recruit where id=" . intval($bizId));
  281. if (empty($recruit)) {
  282. throw new GeneralException("", "此id对应的招聘信息记录不存在,请核查bizId是否正确!");
  283. }
  284. if (intval($recruit["status"]) != 2) {
  285. throw new GeneralException("", "招聘信息当前不是【进行中】状态,请核查招聘信息实际状态后再处理!");
  286. }
  287. if (intval($recruit["deleted"]) != 0) {
  288. throw new GeneralException("", "招聘信息已删除了,请核查招聘信息实际状态后再处理!");
  289. }
  290. $bizArgs = array("recruit" => $recruit, "reason" => $reason);
  291. $backdata = bizbase_recruitWorkLock($recruit["id"], 0, $bizArgs, function ($recruitId, $planDotime, $bizArgs, $mainRemain, $dateRemain, $restRemain, $pickDateList) {
  292. $recruit = $bizArgs["recruit"];
  293. $reason = $bizArgs["reason"];
  294. $sqlParam = array();
  295. $sqlParam[":nowtime"] = time();
  296. $sqlParam[":recruitId"] = intval($recruit["id"]);
  297. $sqlParam[":biz_traderid"] = intval($recruit["biz_traderid"]);
  298. $sqlParam[":status"] = 4;
  299. $sqlParam[":remain_numtotal"] = intval($mainRemain);
  300. $sqlParam[":remark"] = "[" . date("Y-m-d H:i:s", time()) . "] 手工下架 {$reason} \n";
  301. $sqlTemp = " update biz_trader_recruit set updatetime=:nowtime,istop=0 ";
  302. $sqlTemp .= " ,`status`=:status, remark=concat(:remark,ifnull(remark,''))";
  303. $sqlTemp .= " where id=:recruitId;";
  304. $sqlTemp .= " set @placeholder111=:biz_traderid;";
  305. $sqlTemp .= " set @placeholder222=:remain_numtotal;";
  306. if (intval($mainRemain) > 0) {
  307. $sqlTemp .= " insert into biz_trader_numaccount set createtime=:nowtime";
  308. $sqlTemp .= " ,biz_traderid=:biz_traderid "; //直接返还到非免费次数即可;账目可平!
  309. $sqlTemp .= " ,type=0,biz_catalog=1,biz_id=:recruitId,`status`=1,`count`=:remain_numtotal";
  310. $sqlTemp .= " ,remark='[" . date("Y-m-d H:i:s", time()) . "] 因手工下架返回剩余次数';";
  311. }
  312. $backdata = pdo_query3($sqlTemp, $sqlParam);
  313. return $backdata;
  314. });
  315. return $backdata;
  316. break;
  317. case "upsert":
  318. case "upsertLaunchAudit":
  319. case "upsertReset":
  320. if (intval($baseUser["subsystem"] != intval(SUBSYS_CAPITAL_MINA))) {
  321. throw new GeneralException("", "只能是商家发布招聘信息");
  322. }
  323. $bizTrader = $bizUser;
  324. if ($handleMode == "upsertLaunchAudit") {
  325. bizbase_verifyUserAccount($bizTrader, true, "无法发布新招聘信息");
  326. $accountInfo = bizbase_traderAccountInfo($bizTrader);
  327. $balance = round(floatval($accountInfo["balance"]), 2);
  328. //if($balance==0) throw new GeneralException("", "您的账户余额为零,无法发布新招聘信息");
  329. if ($balance < 0) {
  330. throw new GeneralException("", "您尚有欠款未还,无法发布新招聘信息");
  331. }
  332. if ($bizTrader["catalog"] < 0) {
  333. throw new GeneralException("", "您尚未完善信息,无法发布新招聘信息");
  334. }
  335. if ($bizTrader["catalog"] == 0 && empty($bizTrader["lawer_idcard"])) {
  336. throw new GeneralException("", "您尚未完成实名认证(提交身份证信息),无法发布新招聘信息");
  337. }
  338. if ($bizTrader["catalog"] == 1 && empty($bizTrader["bizlicense_pic"])) {
  339. throw new GeneralException("", "您尚未完成实名认证(提交营业执照),暂时无法发布新招聘信息");
  340. }
  341. }
  342. $bizData = isset($ajaxdata["bizData"]) ? $ajaxdata["bizData"] : $GPC["bizData"];
  343. if (empty($bizData)) {
  344. throw new GeneralException("", "没有传递必要的bizData参数");
  345. }
  346. /***字段参数收集并校验**start***/
  347. $saveData = array();
  348. $saveData["title"] = trim($bizData["title"]);
  349. if (
  350. mb_strlen($saveData["title"]) <= 0 || mb_strlen($saveData["title"]) > 180
  351. || !preg_match("/^.*$/", $saveData["title"])
  352. ) {
  353. throw new GeneralException("", "标题必填,且长度范围为1-180!");
  354. }
  355. $saveData["profile_photo"] = trim($bizData["profile_photo"]);
  356. // if ($handleMode == "upsertLaunchAudit")//只在提交审核时验证
  357. // if(mb_strlen($saveData["profile_photo"])<=0 || mb_strlen($saveData["profile_photo"])>120
  358. // || !preg_match("/^.*$/",$saveData["profile_photo"]))
  359. // throw new GeneralException("","图片路径必填,且长度范围为1-120!");
  360. $saveData["work_typename"] = trim($bizData["work_typename"]);
  361. $saveData["feeper"] = floatval($bizData["feeper"]);
  362. $saveData["feetotal"] = floatval($bizData["feetotal"]);
  363. if ($handleMode == "upsertLaunchAudit" && intval($saveData["feetotal"]) <= 0) {
  364. throw new GeneralException("", "金额费用没有设置且不能小于等于0");
  365. }
  366. $saveData["meals_providing"] = intval($bizData["meals_providing"]);
  367. $saveData["urgent_level"] = intval($bizData["urgent_level"]);
  368. $saveData["settle_catalog"] = intval($bizData["settle_catalog"]);
  369. $saveData["begin_datetime"] = intval(strtotime(date("Y-m-d", strtotime($bizData["begin_datetime"]))));
  370. if ($handleMode == "upsertLaunchAudit") { //只在提交审核时验证
  371. if ($saveData["begin_datetime"] <= 0) {
  372. throw new GeneralException("", "开始日期必填");
  373. }
  374. if (intval($saveData["begin_datetime"]) < strtotime(date("Y-m-d", time()))) {
  375. throw new GeneralException("lessToday", "开始日期不能小于今天");
  376. }
  377. }
  378. $saveData["finish_datetime"] = intval(strtotime(date("Y-m-d", strtotime($bizData["finish_datetime"]))));
  379. if ($handleMode == "upsertLaunchAudit") { //只在提交审核时验证
  380. if ($saveData["settle_catalog"] <= 0 && ($saveData["finish_datetime"] - $saveData["begin_datetime"]) < 0) {
  381. throw new GeneralException("", "完工结日期不能小于开始日期!");
  382. }
  383. if (($saveData["finish_datetime"] - $saveData["begin_datetime"]) > 3600 * 24 * 6) {
  384. throw new GeneralException("", "完工结日期跨度不能大于7天!");
  385. }
  386. }
  387. $saveData["begin_hour"] = trim($bizData["begin_hour"]);
  388. if ($handleMode == "upsertLaunchAudit") //只在提交审核时验证
  389. {
  390. if (mb_strlen($saveData["begin_hour"]) != 5 || !preg_match("/^\d\d:\d\d$/", $saveData["begin_hour"])) {
  391. throw new GeneralException("", "开工时间不正确 应该是 nn:nn 模式");
  392. }
  393. }
  394. $begin_hour = explode(":", $saveData["begin_hour"]);
  395. $saveData["begin_hour2"] = intval($begin_hour[0]) * 3600 + intval($begin_hour[1]) * 60;
  396. if ($handleMode == "upsertLaunchAudit") { //只在提交审核时验证
  397. // 阿东注释代码 添加招聘时,时间限制去掉
  398. // if((intval($saveData["begin_datetime"])+(intval($saveData["begin_hour2"])))<(time()+3600*2))
  399. // throw new GeneralException("overdue","设置的开工日期时间已经进入自动下架了,请核查修正!");
  400. if ((intval($saveData["begin_datetime"]) + (intval($saveData["begin_hour2"]))) <= time()) {
  401. throw new GeneralException("overdue", "开工时间请大于当前时间");
  402. }
  403. }
  404. $saveData["finish_hour"] = trim($bizData["finish_hour"]);
  405. if ($handleMode == "upsertLaunchAudit") //只在提交审核时验证
  406. {
  407. if (mb_strlen($saveData["finish_hour"]) != 5 || !preg_match("/^\d\d:\d\d$/", $saveData["finish_hour"])) {
  408. throw new GeneralException("", "完工时间不正确 应该是 nn:nn 模式");
  409. }
  410. }
  411. $finish_hour = explode(":", $saveData["finish_hour"]);
  412. $saveData["finish_hour2"] = intval($finish_hour[0]) * 3600 + intval($finish_hour[1]) * 60;
  413. $saveData["need_total"] = intval($bizData["need_total"]);
  414. if ($handleMode == "upsertLaunchAudit") //只在提交审核时验证
  415. {
  416. if (intval($saveData["need_total"]) <= 0) {
  417. throw new GeneralException("", "需求总人数没有设置且不能小于等于0");
  418. }
  419. }
  420. $saveData["need_perday"] = intval($bizData["need_perday"]);
  421. $saveData["requirements"] = json_encode($bizData["requirements"]); //标签列表
  422. if ($handleMode == "upsertLaunchAudit") //只在提交审核时验证
  423. {
  424. if (empty($saveData["requirements"])) {
  425. throw new GeneralException("", "招聘要求必填");
  426. }
  427. }
  428. $saveData["linker_name"] = trim($bizData["linker_name"]);
  429. if ($handleMode == "upsertLaunchAudit") //只在提交审核时验证
  430. {
  431. if (
  432. mb_strlen($saveData["linker_name"]) <= 0 || mb_strlen($saveData["linker_name"]) > 30
  433. || !preg_match("/^.*$/", $saveData["linker_name"])
  434. ) {
  435. throw new GeneralException("", "联系人姓名必填,且长度范围为1-30!");
  436. }
  437. }
  438. $saveData["linker_phone"] = trim($bizData["linker_phone"]);
  439. // if(mb_strlen($saveData["linker_phone"])<=0 || mb_strlen($saveData["linker_phone"])>20
  440. // || !preg_match("/^.*$/",$saveData["linker_phone"]))
  441. // throw new GeneralException("","联系人电话必填,且长度范围为1-20!");
  442. $saveData["age_mode"] = intval($bizData["age_mode"]);
  443. $saveData["age_min"] = intval($bizData["age_min"]);
  444. $saveData["age_max"] = intval($bizData["age_max"]);
  445. $saveData["gender_mode"] = intval($bizData["gender_mode"]);
  446. $saveData["work_addr"] = $bizData["work_addr"];
  447. if ($handleMode == "upsertLaunchAudit") //只在提交审核时验证
  448. {
  449. if (empty($saveData["work_addr"])) {
  450. throw new GeneralException("", "工作地址信息必填");
  451. }
  452. }
  453. $saveData["work_addr1"] = json_encode($bizData["work_addr1"]);
  454. $saveData["work_addr_lng"] = trim($bizData["work_addr_lng"]);
  455. if ($handleMode == "upsertLaunchAudit") //只在提交审核时验证
  456. {
  457. if (!preg_match("/^\d{1,}.\d{1,}$/", $saveData["work_addr_lng"])) {
  458. throw new GeneralException("", "工作地址经度不能为空或格式不正确");
  459. }
  460. }
  461. $saveData["work_addr_lat"] = trim($bizData["work_addr_lat"]);
  462. if ($handleMode == "upsertLaunchAudit") //只在提交审核时验证
  463. {
  464. if (!preg_match("/^\d{1,}.\d{1,}$/", $saveData["work_addr_lat"])) {
  465. throw new GeneralException("", "工作地址纬度不能为空或格式不正确");
  466. }
  467. }
  468. $saveData["work_desc"] = trim($bizData["work_desc"]);
  469. if ($handleMode == "upsertLaunchAudit") //只在提交审核时验证
  470. {
  471. if (mb_strlen($saveData["work_desc"]) <= 0) {
  472. throw new GeneralException("", "工作内容必填");
  473. }
  474. }
  475. $saveData["work_process"] = trim($bizData["work_process"]);
  476. $saveData["work_remark"] = trim($bizData["work_remark"]);
  477. $saveData["enroll_audit"] = intval($bizData["enroll_audit"]);
  478. $saveData["settle_mode"] = intval($bizData["settle_mode"]);
  479. //关联商家的id
  480. $saveData["biz_traderid"] = $bizTrader["id"];
  481. /***字段参数收集并校验**finish***/
  482. $lockid = intval($saveData["biz_traderid"]);
  483. $param = array("handleMode" => $handleMode, "bizTrader" => $bizTrader, "saveData" => $saveData, "bizData" => $bizData);
  484. $backdata = biz_flkForTrader($lockid, $param, function ($param) {
  485. $handleMode = $param["handleMode"];
  486. $bizTrader = $param["bizTrader"];
  487. $saveData = $param["saveData"];
  488. $bizData = $param["bizData"];
  489. $sqlTemp = "";
  490. $sqlParam = array();
  491. if (intval($bizData["id"]) <= 0) {
  492. if ($handleMode == "upsertLaunchAudit") {
  493. $saveData["status"] = 1; //一步提交审核
  494. $saveData["remark"] = "[" . date("Y-m-d H:i:s", time()) . "] 提交审核 \n";
  495. }
  496. if ($handleMode == "upsertReset") {
  497. throw new GeneralException("", "新增模式下,进行驳回后的修复是不可能的啊!!");
  498. }
  499. $saveData["createtime"] = time();
  500. //随机生成报名头像列表
  501. $enrolled_heads = "";
  502. $tmpCount = 0;
  503. $enrolled_heads .= rand(1, 100) . ',';
  504. while ($tmpCount <= 5) {
  505. $newRomdom = rand(1, 100);
  506. while (mb_strpos($enrolled_heads, $newRomdom . ',') !== false) {
  507. $newRomdom = rand(1, 100);
  508. }
  509. $enrolled_heads .= $newRomdom . ',';
  510. $tmpCount++;
  511. }
  512. $saveData["enrolled_heads"] = $enrolled_heads;
  513. $upsertSet = pdo_buildSetSQL("", $saveData);
  514. $sqlParam += $upsertSet["params"]; //合并参数集合
  515. $sqlTemp .= " insert into biz_trader_recruit set " . $upsertSet["fields"] . ";";
  516. $sqlTemp .= " set @bizid=LAST_INSERT_ID();";
  517. } else {
  518. $oldData = pdo_fetch("select * from biz_trader_recruit where id=" . intval($bizData["id"]));
  519. if (empty($oldData)) {
  520. throw new GeneralException("", "此id对应的记录不存在,请核查bizId是否正确!");
  521. }
  522. if (intval($oldData["deleted"]) != 0) {
  523. throw new GeneralException("", "此记录已删除了,请核查后再处理!");
  524. }
  525. if (intval($oldData["biz_traderid"]) != intval($bizTrader["id"])) {
  526. throw new GeneralException("", "此记录不是您所拥有的招聘信息,请核查后再处理!");
  527. }
  528. if ($handleMode == "upsert") {
  529. if (intval($oldData["status"]) != 0) {
  530. throw new GeneralException("", "当前招聘记录已不是待提交,无法保存到草稿,请核查!");
  531. }
  532. $saveData["status"] = 0;
  533. $saveData["remark"] = "[" . date("Y-m-d H:i:s", time()) . "] 保存到草稿 \n" . trim($oldData["remark"]);
  534. }
  535. if ($handleMode == "upsertLaunchAudit") {
  536. if (intval($oldData["status"]) > 0) {
  537. throw new GeneralException("", "当前招聘记录已不是待提交和被驳回状态,无法提交审核,请核查!");
  538. }
  539. $saveData["status"] = 1; //一步提交审核
  540. $saveData["remark"] = "[" . date("Y-m-d H:i:s", time()) . "] 提交审核 \n" . trim($oldData["remark"]);
  541. }
  542. if ($handleMode == "upsertReset") {
  543. if (intval($oldData["status"]) != -1) {
  544. throw new GeneralException("", "当前招聘记录已不是被驳回状态,无法保存到草稿,请核查!");
  545. }
  546. $saveData["status"] = 0; //驳回再保存,修复为待提交状态
  547. $saveData["remark"] = "[" . date("Y-m-d H:i:s", time()) . "] 驳回再保存,修复为待提交状态 \n" . trim($oldData["remark"]);
  548. }
  549. $saveData["updatetime"] = time();
  550. $upsertSet = pdo_buildSetSQL("", $saveData);
  551. $sqlParam += $upsertSet["params"];
  552. $sqlTemp .= " update biz_trader_recruit set " . $upsertSet["fields"] . " ";
  553. $sqlTemp .= " where id=" . intval($bizData["id"]) . ";";
  554. $sqlTemp .= " set @bizid=" . intval($bizData["id"]) . ";";
  555. }
  556. if ($handleMode == "upsertLaunchAudit") { //自动审核处理过程逻辑
  557. $recuritRule = bizbase_fetchBaseConfig("RecuritRule", true);
  558. $feetotal = round($saveData["feetotal"], 2);
  559. if ($feetotal < $recuritRule["feeper_min"]) {
  560. throw new GeneralException("", "金额费用不能小于最低金额 " . $recuritRule["feeper_min"] . " 元");
  561. }
  562. if (true) { //自动审核处理过程逻辑
  563. $sqlParam[":plat_fetchrate"] = round(floatval($recuritRule["plater_getrate"] / 100), 2);
  564. $sqlParam[":plat_fetchmoney"] = round($feetotal * $sqlParam[":plat_fetchrate"], 2);
  565. $sqlParam[":sharer_fetchrate"] = round(floatval($recuritRule["share_getrate"] / 100), 2);
  566. $sqlParam[":sharer_fetchmoney"] = round($sqlParam[":plat_fetchmoney"] * $sqlParam[":sharer_fetchrate"], 2);
  567. $sqlParam[":salary"] = round($feetotal - $sqlParam[":plat_fetchmoney"], 2);
  568. if ($sqlParam[":salary"] <= 0) {
  569. throw new GeneralException("", "平台分的有点多了吧,工资都没了");
  570. }
  571. if ($sqlParam[":sharer_fetchmoney"] > $sqlParam[":plat_fetchmoney"]) {
  572. throw new GeneralException("", "分享分销分成金额大于了平台分成金额了");
  573. }
  574. $feeper = $sqlParam[":salary"];
  575. if (intval($saveData["settle_catalog"]) <= 0 && intval($saveData["finish_datetime"]) > intval($saveData["begin_datetime"])) {
  576. $startWorkDate = strtotime(date("Y-m-d", intval($saveData["begin_datetime"])));
  577. $days = 0;
  578. do {
  579. $days++;
  580. $startWorkDate = strtotime("+1day", strtotime(date("Y-m-d", $startWorkDate)));
  581. } while ($startWorkDate <= strtotime(date("Y-m-d", intval($saveData["finish_datetime"]))));
  582. $feeper = round($sqlParam[":salary"] / $days, 2);
  583. }
  584. $sqlParam[":auto_feeper"] = $feeper;
  585. $sqlParam[":auto_nowtime"] = time();
  586. $sqlParam[":auto_status"] = 2;
  587. $sqlParam[":auto_remark"] = "[" . date("Y-m-d H:i:s", time()) . "] 自动审核通过 \n";
  588. // feeper和salary
  589. $sqlTemp .= " update biz_trader_recruit set updatetime=:auto_nowtime, `status`=:auto_status, remark=concat(:auto_remark,ifnull(remark,''))
  590. ,plat_fetchrate=:plat_fetchrate,plat_fetchmoney=:plat_fetchmoney
  591. ,sharer_fetchrate=:sharer_fetchrate,sharer_fetchmoney=:sharer_fetchmoney
  592. ,salary=:salary,feeper=:auto_feeper
  593. where id=@bizid;";
  594. }
  595. if (true) { //免费次数处理逻辑
  596. $need_total = intval($saveData["need_total"]);
  597. $freeCount = intval($bizTrader["freecount"]);
  598. $freeCount = $freeCount <= 0 ? 0 : $freeCount;
  599. $freecount_used = intval($bizTrader["freecount_used"]);
  600. $freecount_used = $freecount_used <= 0 ? 0 : $freecount_used;
  601. $canUseFreeCount = $freeCount - $freecount_used;
  602. $useFreeCount = 0;
  603. if (intval($canUseFreeCount) > 0) {
  604. $useFreeCount = ($canUseFreeCount >= $need_total) ? $need_total : $canUseFreeCount;
  605. }
  606. $payCount = $need_total - $useFreeCount;
  607. $accountInfo = pdo_fetchall("select type,ifnull(sum(ifnull(count,0)),0) as total
  608. from biz_trader_numaccount where `deleted`=0 and `status`=1 and biz_traderid=" . intval($saveData["biz_traderid"]) . "
  609. group by type");
  610. $totalIncome = 0;
  611. $totalOutgoing = 0;
  612. foreach ($accountInfo as $item) {
  613. switch (intval($item["type"])) {
  614. case 0:
  615. $totalIncome = intval($item["total"]);
  616. break;
  617. case 1:
  618. $totalOutgoing = intval($item["total"]);
  619. break;
  620. }
  621. }
  622. $totalbalance = $totalIncome - $totalOutgoing;
  623. if ($totalbalance < $payCount) {
  624. throw new GeneralException("NoEnoughCount", array(
  625. "tip" => "剩余次数不足支付本次招聘的人次,请先充值次数!",
  626. "useFreeCount" => $useFreeCount,
  627. "payCount" => $payCount,
  628. "balance" => $totalbalance,
  629. "dvalue" => $payCount - $totalbalance,
  630. ));
  631. }
  632. if (intval($useFreeCount) > 0) {
  633. $sqlTemp .= " update biz_trader set updatetime=" . time() . " ";
  634. $sqlTemp .= " ,freecount_used=ifnull(freecount_used,0)+" . intval($useFreeCount) . " ";
  635. $sqlParam[":freecount_used_remark"] = "[" . date("Y-m-d H:i:s", time()) . "] 扣减免费" . intval($useFreeCount) . "次数 招聘记录id=>";
  636. $sqlTemp .= " ,freecount_used_remark=concat(:freecount_used_remark,@bizid,'\n',ifnull(freecount_used_remark,'')) ";
  637. $sqlTemp .= " where id=" . intval($bizTrader["id"]) . ";";
  638. }
  639. $sqlTemp .= " insert into biz_trader_numaccount set createtime=" . time() . " ";
  640. $sqlTemp .= " ,biz_traderid=" . intval($bizTrader["id"]) . " ";
  641. $sqlTemp .= " ,type=1,biz_catalog=0,biz_id=@bizid,`count`=" . intval($payCount) . ",`freecount`=" . intval($useFreeCount);
  642. $sqlParam[":numaccount_remark"] = "[" . date("Y-m-d H:i:s", time()) . "] 扣减免费次数" . intval($useFreeCount) . ",额外次数" . intval($payCount) . " 招聘记录id=>";
  643. $sqlTemp .= " ,`status`=1,remark=concat(:numaccount_remark,@bizid,'\n',ifnull(remark,''));";
  644. }
  645. }
  646. $sqlTemp .= " select * from biz_trader_recruit where id=@bizid;";
  647. $dataset = pdo_query3($sqlTemp, $sqlParam);
  648. $backdata = $dataset[count($dataset) - 1][0];
  649. return $backdata;
  650. });
  651. return $backdata;
  652. break;
  653. case "deleteByTrader":
  654. if ($handleMode == "deleteByTrader") {
  655. $bizTrader = $bizUser;
  656. }
  657. $bizId = isset($ajaxdata["bizId"]) ? $ajaxdata["bizId"] : $GPC["bizId"];
  658. if (empty($bizId)) {
  659. throw new GeneralException("", "没有传递必要的bizId参数");
  660. }
  661. $reason = isset($ajaxdata["reason"]) ? $ajaxdata["reason"] : $GPC["reason"];
  662. //if (empty($reason)) throw new GeneralException("", "下架必须输入要原因!");
  663. $trader = pdo_fetch("select * from biz_trader_recruit where id=" . intval($bizId));
  664. if (empty($trader)) {
  665. throw new GeneralException("", "此id对应的招聘信息记录不存在,请核查bizId是否正确!");
  666. }
  667. if (intval($trader["status"]) != -1) {
  668. throw new GeneralException("", "招聘信息当前不是【被驳回】状态,请核查招聘信息实际状态后再处理!");
  669. }
  670. if (intval($trader["deleted"]) != 0) {
  671. throw new GeneralException("", "招聘信息已删除了,请核查招聘信息实际状态后再处理!");
  672. }
  673. if ($handleMode == "deleteByTrader" && intval($trader["biz_traderid"]) != intval($bizTrader["id"])) {
  674. throw new GeneralException("", "此记录不是您所拥有的招聘信息,请核查后再处理!");
  675. }
  676. $backdata = pdo_query("update biz_trader_recruit set updatetime=:nowtime, `deleted`=1, remark=concat(:remark,ifnull(remark,''))
  677. where id=:id;", array(
  678. ":nowtime" => time(), ":remark" => "[" . date("Y-m-d H:i:s", time()) . "] 删除 $reason\n", ":id" => intval($bizId),
  679. ));
  680. return $backdata;
  681. break;
  682. case "audit":
  683. //提取必要参数
  684. $bizId = isset($ajaxdata["bizId"]) ? $ajaxdata["bizId"] : $GPC["bizId"];
  685. if (empty($bizId)) {
  686. throw new GeneralException("", "没有传递必要的bizId参数");
  687. }
  688. $todo = isset($ajaxdata["todo"]) ? $ajaxdata["todo"] : $GPC["todo"];
  689. if (trim($todo) != "allow" && trim($todo) != "refuse") {
  690. throw new GeneralException("", "没有传递必要的todo参数,或参数值不正确");
  691. }
  692. $reason = isset($ajaxdata["reason"]) ? $ajaxdata["reason"] : $GPC["reason"];
  693. if (trim($todo) == "refuse" && empty($reason)) {
  694. throw new GeneralException("", "拒绝驳回必须输入要原因!");
  695. }
  696. //前置条件判定
  697. $recruit = pdo_fetch("select btr.*,bt.certif_confirmed as bt_certif_confirmed
  698. from biz_trader_recruit btr
  699. left join biz_trader bt on bt.id=btr.biz_traderid
  700. where btr.id=" . intval($bizId));
  701. if (empty($recruit)) {
  702. throw new GeneralException("", "此id对应的招聘信息记录不存在,请核查bizId是否正确!");
  703. }
  704. if (intval($recruit["status"]) != 1) {
  705. throw new GeneralException("", "招聘信息当前不是【待审核】状态,请核查招聘信息实际状态后再处理!");
  706. }
  707. if (intval($recruit["deleted"]) != 0) {
  708. throw new GeneralException("", "招聘信息已删除了,请核查招聘信息实际状态后再处理!");
  709. }
  710. $sqlParams = array();
  711. $sqlParams[":id"] = intval($bizId);
  712. $sqlParams[":nowtime"] = time();
  713. $operatorName = empty($baseUser["login_name"]) ? "" : " " . $baseUser["login_name"] . " ";
  714. if ((trim($todo) == "refuse")) {
  715. $sqlParams[":status"] = -1;
  716. $sqlParams[":remark"] = "[" . date("Y-m-d H:i:s", time()) . "] 申请被{$operatorName}驳回:$reason \n";
  717. $lockid = intval($recruit["biz_traderid"]);
  718. $param = array("recruit" => $recruit, "sqlParams" => $sqlParams);
  719. $backdata = biz_flkForTrader($lockid, $param, function ($param) {
  720. $recruit = $param["recruit"];
  721. $sqlParams = $param["sqlParams"];
  722. $sqlParams[":biz_traderid"] = intval($recruit["biz_traderid"]);
  723. $sqlTemp = "";
  724. $sqlTemp .= " update biz_trader_recruit set updatetime=:nowtime, `status`=:status, remark=concat(:remark,ifnull(remark,'')) where id=:id;";
  725. $sqlTemp .= " select @numaccountId:=id,@useFreeCount:=`freecount` from biz_trader_numaccount ";
  726. $sqlTemp .= " where `deleted`=0 and biz_traderid=:biz_traderid and type=1 and biz_catalog=0 and biz_id=:id ";
  727. $sqlTemp .= " order by id desc limit 1;";
  728. $sqlTemp .= " update biz_trader_numaccount set updatetime=:nowtime, `deleted`=1 ";
  729. $sqlParams[":numaccount_remark"] = "[" . date("Y-m-d H:i:s", time()) . "] 驳回后恢复次数 \n";
  730. $sqlTemp .= " ,remark=concat(:numaccount_remark,ifnull(remark,''))";
  731. $sqlTemp .= " where id=@numaccountId;";
  732. $sqlTemp .= " update biz_trader set updatetime=:nowtime ";
  733. $sqlTemp .= " ,freecount_used=ifnull(freecount_used,0)-ifnull(@useFreeCount,0) ";
  734. $sqlParams[":freecount_used_remark"] = "[" . date("Y-m-d H:i:s", time()) . "] 驳回后恢复免费次数【";
  735. $sqlTemp .= " ,freecount_used_remark=concat(:freecount_used_remark,ifnull(@useFreeCount,0),'】招聘记录id=>',:id,'\n',ifnull(freecount_used_remark,'')) ";
  736. $sqlTemp .= " where id=:biz_traderid;";
  737. $backdata = pdo_query3($sqlTemp, $sqlParams);
  738. return $backdata;
  739. });
  740. return $backdata;
  741. } else {
  742. if (intval($recruit["bt_certif_confirmed"]) < 1) {
  743. throw new GeneralException("", "此招聘信息对应的商家实名认证还未确认,不应该审核通过,请核查!!");
  744. }
  745. $platcutMode = isset($ajaxdata["platcutMode"]) ? $ajaxdata["platcutMode"] : $GPC["platcutMode"];
  746. $platcutValue = isset($ajaxdata["platcutValue"]) ? $ajaxdata["platcutValue"] : $GPC["platcutValue"];
  747. switch (intval($platcutMode)) {
  748. case 0:
  749. $plat_fetchrate = round(floatval($platcutValue), 2);
  750. $plat_fetchmoney = round(floatval($recruit["feetotal"]) * $plat_fetchrate / 100, 2);
  751. $plat_fetchmoney = $plat_fetchmoney < 0 ? 0 : $plat_fetchmoney;
  752. break;
  753. case 1:
  754. $plat_fetchmoney = round(floatval($platcutValue), 2);
  755. $plat_fetchmoney = $plat_fetchmoney < 0 ? 0 : $plat_fetchmoney;
  756. $plat_fetchrate = round($plat_fetchmoney / floatval($recruit["feetotal"]) * 100, 2);
  757. break;
  758. default:
  759. throw new GeneralException("", "platcutMode参数不正确!");
  760. }
  761. $sharecutMode = isset($ajaxdata["sharecutMode"]) ? $ajaxdata["sharecutMode"] : $GPC["sharecutMode"];
  762. $sharecutValue = isset($ajaxdata["sharecutValue"]) ? $ajaxdata["sharecutValue"] : $GPC["sharecutValue"];
  763. switch (intval($sharecutMode)) {
  764. case 0:
  765. $sharer_fetchrate = round(floatval($sharecutValue), 2);
  766. $sharer_fetchmoney = round($plat_fetchmoney * $sharer_fetchrate / 100, 2);
  767. $sharer_fetchmoney = $sharer_fetchmoney < 0 ? 0 : $sharer_fetchmoney;
  768. break;
  769. case 1:
  770. $sharer_fetchmoney = round(floatval($sharecutValue), 2);
  771. $sharer_fetchmoney = $sharer_fetchmoney < 0 ? 0 : $sharer_fetchmoney;
  772. $sharer_fetchrate = round($sharer_fetchmoney / $plat_fetchmoney * 100, 2);
  773. break;
  774. default:
  775. throw new GeneralException("", "platcutMode参数不正确!");
  776. }
  777. $sqlParams[":status"] = 2;
  778. $sqlParams[":remark"] = "[" . date("Y-m-d H:i:s", time()) . "] {$operatorName}审核通过 \n";
  779. $sqlParams[":plat_fetchrate"] = $plat_fetchrate;
  780. $sqlParams[":plat_fetchmoney"] = $plat_fetchmoney;
  781. $sqlParams[":sharer_fetchrate"] = $sharer_fetchrate;
  782. $sqlParams[":sharer_fetchmoney"] = $sharer_fetchmoney;
  783. $sqlParams[":salary"] = (round(floatval($recruit["feetotal"]), 2) - $plat_fetchmoney);
  784. if ($sqlParams[":salary"] <= 0) {
  785. throw new GeneralException("", "平台分的有点多了吧,工资都没了");
  786. }
  787. if ($sharer_fetchmoney > $plat_fetchmoney) {
  788. throw new GeneralException("", "分享分销分成金额大于了平台分成金额了");
  789. }
  790. $feeper = $sqlParams[":salary"];
  791. if (intval($recruit["settle_catalog"]) <= 0 && intval($recruit["finish_datetime"]) > intval($recruit["begin_datetime"])) {
  792. $startWorkDate = strtotime(date("Y-m-d", intval($recruit["begin_datetime"])));
  793. $days = 0;
  794. do {
  795. $days++;
  796. $startWorkDate = strtotime("+1day", strtotime(date("Y-m-d", $startWorkDate)));
  797. } while ($startWorkDate <= strtotime(date("Y-m-d", intval($recruit["finish_datetime"]))));
  798. $feeper = round($sqlParams[":salary"] / $days, 2);
  799. }
  800. $sqlParams[":feeper"] = $feeper;
  801. $backdata = pdo_query("update biz_trader_recruit set updatetime=:nowtime, `status`=:status, remark=concat(:remark,ifnull(remark,''))
  802. ,plat_fetchrate=:plat_fetchrate,plat_fetchmoney=:plat_fetchmoney
  803. ,sharer_fetchrate=:sharer_fetchrate,sharer_fetchmoney=:sharer_fetchmoney
  804. ,salary=:salary,feeper=:feeper
  805. where id=:id;", $sqlParams);
  806. return $backdata;
  807. }
  808. break;
  809. case "terminate":
  810. $recuritIds = isset($ajaxdata["recuritIds"]) ? $ajaxdata["recuritIds"] : $GPC["recuritIds"];
  811. if (empty($recuritIds)) {
  812. throw new GeneralException("", "没有传递必要的recuritIds参数");
  813. }
  814. $reason = isset($ajaxdata["reason"]) ? $ajaxdata["reason"] : $GPC["reason"];
  815. $idSet = array();
  816. foreach ($recuritIds as $item) {
  817. array_push($idSet, intval($item));
  818. }
  819. $idSet = implode(",", $idSet);
  820. $recuritList = pdo_fetchall("select * from biz_trader_recruit where id in ({$idSet}) ");
  821. if (empty($recuritList)) {
  822. throw new GeneralException("", "没有定位到任何招聘记录!");
  823. }
  824. $sqlTemp = "";
  825. $sqlParam = array();
  826. $sqlParam[":nowtime"] = time();
  827. $sqlParam[":status"] = 3;
  828. $sqlParam[":biz_traderid"] = intval($bizTrader["id"]);
  829. $sqlParam[":remark"] = "[" . date("Y-m-d H:i:s", time()) . "] 终止招聘 $reason \n";
  830. // $sql = "select * from biz_todowork where biz_recruitid= 476 and ( `status`=-1 or `status`=-3 or `status`>=2 or `status`!=5)";
  831. // $recruit = pdo_fetch($sql, array());
  832. // var_dump($recruit);
  833. // die;
  834. foreach ($recuritList as $item) {
  835. if (intval($item["deleted"]) != 0) {
  836. throw new GeneralException("", "招聘记录已被删除了!");
  837. }
  838. if (intval($item["status"]) != 2) {
  839. throw new GeneralException("", "招聘记录不是进行中已审核状态了!");
  840. }
  841. if (intval($item["biz_traderid"]) != intval($bizTrader["id"])) {
  842. throw new GeneralException("", "招聘记录不是您发布的!");
  843. }
  844. $no_count = "select count(*) as no_count from biz_todowork where biz_recruitid={$item["id"]} and status = 1"; //待审核数量
  845. $no = pdo_fetch($no_count, array());
  846. if ($no['no_count'] != 0) {
  847. throw new GeneralException("", "此招聘还有待录用待审核的报名记录,不能终止招聘,请核查!");
  848. }
  849. $ok_count = "select count(*) as ok_count from biz_todowork where biz_recruitid={$item["id"]} and status in (2,3,4,5,90)"; //已录用人数
  850. $ok = pdo_fetch($ok_count, array());
  851. $sum_count = " select * from biz_trader_recruit where id={$item["id"]};"; //总录用人数
  852. $sum = pdo_fetch($sum_count, array());
  853. $mainRemain2 = $sum['need_total'] - $ok['ok_count'];
  854. $sqlParam[":recruitId"] = intval($item["id"]);
  855. $sqlParam[":remain_numtotal"] = $mainRemain2;
  856. $sqlTemp = " update biz_trader_recruit set updatetime=:nowtime,istop=0 ";
  857. $sqlTemp .= " ,`status`=:status, remark=concat(:remark,ifnull(remark,''))";
  858. $sqlTemp .= " where id=:recruitId;";
  859. $sqlTemp .= " set @placeholder111=:biz_traderid;";
  860. $sqlTemp .= " set @placeholder222=:remain_numtotal;";
  861. if (intval($mainRemain2) > 0) {
  862. $sqlTemp .= " insert into biz_trader_numaccount set createtime=:nowtime";
  863. $sqlTemp .= " ,biz_traderid=:biz_traderid "; //直接返还到非免费次数即可;账目可平!
  864. $sqlTemp .= " ,type=0,biz_catalog=1,biz_id=:recruitId,`status`=1,`count`=:remain_numtotal";
  865. $sqlTemp .= " ,remark='[" . date("Y-m-d H:i:s", time()) . "] 因终止招聘返回剩余次数';";
  866. }
  867. $backdata = pdo_query3($sqlTemp, $sqlParam);
  868. return $backdata;
  869. bizbase_recruitWorkLock($item["id"], 0, $sqlParam, function ($recruitId, $planDotime, $bizArgs, $mainRemain, $dateRemain, $restRemain, $pickDateList, $mainRemain2) {
  870. $sqlParam = $bizArgs;
  871. if (intval($mainRemain) != intval($mainRemain2)) {
  872. throw new GeneralException("", "此招聘还有待录用待审核的报名记录,不能终止招聘,请核查!");
  873. }
  874. $sqlParam[":recruitId"] = intval($recruitId);
  875. $sqlParam[":remain_numtotal"] = intval($mainRemain2);
  876. $sqlTemp = " update biz_trader_recruit set updatetime=:nowtime,istop=0 ";
  877. $sqlTemp .= " ,`status`=:status, remark=concat(:remark,ifnull(remark,''))";
  878. $sqlTemp .= " where id=:recruitId;";
  879. $sqlTemp .= " set @placeholder111=:biz_traderid;";
  880. $sqlTemp .= " set @placeholder222=:remain_numtotal;";
  881. if (intval($mainRemain2) > 0) {
  882. $sqlTemp .= " insert into biz_trader_numaccount set createtime=:nowtime";
  883. $sqlTemp .= " ,biz_traderid=:biz_traderid "; //直接返还到非免费次数即可;账目可平!
  884. $sqlTemp .= " ,type=0,biz_catalog=1,biz_id=:recruitId,`status`=1,`count`=:remain_numtotal";
  885. $sqlTemp .= " ,remark='[" . date("Y-m-d H:i:s", time()) . "] 因终止招聘返回剩余次数';";
  886. }
  887. $backdata = pdo_query3($sqlTemp, $sqlParam);
  888. });
  889. }
  890. return true;
  891. break;
  892. case "breakoff":
  893. $breakdate = isset($ajaxdata["breakdate"]) ? $ajaxdata["breakdate"] : $GPC["breakdate"];
  894. if (empty($breakdate)) {
  895. throw new GeneralException("", "没有传递必要的breakdate参数");
  896. }
  897. $breakdate = strtotime(date("Y-m-d", strtotime($breakdate)));
  898. if ($breakdate < strtotime(date("Y-m-d", time()))) {
  899. throw new GeneralException("", "违约日期不能是今天以前啊");
  900. }
  901. $reason = isset($ajaxdata["reason"]) ? $ajaxdata["reason"] : $GPC["reason"];
  902. $recuritIds = isset($ajaxdata["recuritIds"]) ? $ajaxdata["recuritIds"] : $GPC["recuritIds"];
  903. $idSet = array();
  904. foreach ($recuritIds as $item) {
  905. array_push($idSet, intval($item));
  906. }
  907. $idSet = implode(",", $idSet);
  908. $recuritList = pdo_fetchall("select * from biz_trader_recruit where id in ({$idSet}) ");
  909. if (empty($recuritList)) {
  910. throw new GeneralException("", "没有定位到任何招聘记录!");
  911. }
  912. $recuritRule = bizbase_fetchBaseConfig("RecuritRule", true);
  913. $errMsgs = array();
  914. foreach ($recuritList as $item) {
  915. try {
  916. $recuritTitle = $item["title"];
  917. if (intval($item["deleted"]) != 0) {
  918. throw new GeneralException("", "招聘记录[{$recuritTitle}]已被删除了!");
  919. }
  920. //if (!(intval($item["status"]) == 2 || intval($item["status"]) == 3)) throw new GeneralException("", "招聘记录[{$recuritTitle}]不是进行中已审核状态了!");
  921. if (intval($item["biz_traderid"]) != intval($bizTrader["id"])) {
  922. throw new GeneralException("", "招聘记录[{$recuritTitle}]不是您发布的!");
  923. }
  924. $bizArgs = array("bizTrader" => $bizTrader, "recruitInfo" => $item, "breakdate" => $breakdate, "reason" => $reason, "recuritRule" => $recuritRule);
  925. $backdata = bizbase_recruitWorkLock($item["id"], 0, $bizArgs, function ($recruitId, $planDotime, $bizArgs, $mainRemain, $dateRemain, $restRemain, $pickDateList) {
  926. $bizTrader = $bizArgs["bizTrader"];
  927. $recruitInfo = $bizArgs["recruitInfo"];
  928. $breakdate = $bizArgs["breakdate"];
  929. $reason = '【' . $bizArgs["reason"] . '】';
  930. $recuritRule = $bizArgs["recuritRule"];
  931. $recuritTitle = $recruitInfo["title"];
  932. if (!isset($pickDateList[$breakdate])) {
  933. throw new GeneralException("", "招聘记录工作日期中[{$recuritTitle}]不存在违约日期" . date("Y-m-d", $breakdate) . "!");
  934. }
  935. $tbreak_cutrate = round($recuritRule["tbreak_cutrate"] / 100, 2);
  936. $tbreak_cutmoney = round($recruitInfo["feetotal"] * $tbreak_cutrate, 2);
  937. if ($tbreak_cutmoney <= 0) {
  938. $tbreak_cutmoney = 0;
  939. }
  940. $sqlParam = array();
  941. $sqlParam[":nowtime"] = time();
  942. $sqlParam[":biz_recruitid"] = $recruitInfo["id"];
  943. $sqlParam[":breakdate"] = strtotime(date("Y-m-d", $breakdate));
  944. $sqlParam[":breakDateStart"] = strtotime(date("Y-m-d", $breakdate));
  945. $sqlParam[":breakDateFinish"] = strtotime(date("Y-m-d 23:59:59", $breakdate));
  946. $sqlParam[":tdwkstatus111"] = -4; //-1-报名被驳回;-3-被违约 -4-被动取消;
  947. $sqlParam[":tdwkstatus222"] = -3;
  948. $sqlParam[":tbreak_cutmoney"] = $tbreak_cutmoney; //商家违约金
  949. $sqlParam[":remark111"] = "[" . date("Y-m-d H:i:s", time()) . "] 待录用违约处理,返还报名押金 $reason \n";
  950. $sqlParam[":remark222"] = "[" . date("Y-m-d H:i:s", time()) . "] 已录用违约处理,返还报名押金及商家支付违约金 $reason \n";
  951. $sqlTemp = "";
  952. //-------------待录用-------------------//
  953. //退还押金
  954. $sqlTemp .= " insert into biz_worker_account ( `biz_workerid`, `createtime`,`type`, `money`, `status`, `biz_catalog`,`biz_id`, remark )";
  955. $sqlTemp .= " select biz_workerid , :nowtime , 0 , enroll_premoney, 1, 7 , id, :remark111 ";
  956. $sqlTemp .= " from biz_todowork";
  957. $sqlTempE111 = " where `workteam_mode`=0 and `status`=1 and biz_recruitid=:biz_recruitid";
  958. $sqlTempE111 .= " and todo_begindate>=:breakDateStart and todo_begindate<=:breakDateFinish";
  959. $sqlTemp .= $sqlTempE111 . ";";
  960. //后置修正状态
  961. $sqlTemp .= " update biz_todowork set updatetime=:nowtime ";
  962. $sqlTemp .= " ,`status`=:tdwkstatus111, remark=concat(:remark111,ifnull(remark,''))";
  963. $sqlTemp .= $sqlTempE111 . ";";
  964. //-------------已录用-------------------//
  965. //------违约记录
  966. $sqlTemp .= " insert into biz_message_queue( createtime, biz_catalog, biz_id)";
  967. $sqlTemp .= " select :nowtime, 2, tdwk.id";
  968. $sqlTemp .= " from biz_todowork tdwk";
  969. $sqlTemp .= " left join biz_trader_recruit btr on btr.id=tdwk.biz_recruitid "; //已结束工作了就不能再被违约了,都干完活了就进入结算流程了
  970. $sqlTempE111 = " where tdwk.`workteam_mode`=0 and tdwk.`status`>=2 and tdwk.`status`<4 and tdwk.biz_recruitid=:biz_recruitid";
  971. $sqlTempE111 .= " and tdwk.todo_begindate>=:breakDateStart and tdwk.todo_begindate<=:breakDateFinish";
  972. $sqlTemp .= $sqlTempE111 . ";";
  973. //退还押金
  974. $sqlTemp .= " insert into biz_worker_account ( `biz_workerid`, `createtime`,`type`, `money`, `status`, `biz_catalog`,`biz_id`, remark )";
  975. $sqlTemp .= " select tdwk.biz_workerid , :nowtime , 0 , tdwk.enroll_premoney, 1, 7 , tdwk.id, :remark222 ";
  976. $sqlTemp .= " from biz_todowork tdwk";
  977. $sqlTemp .= " left join biz_trader_recruit btr on btr.id=tdwk.biz_recruitid ";
  978. $sqlTemp .= $sqlTempE111 . ";";
  979. //商家冻结费用解冻
  980. $sqlTemp .= " insert into biz_trader_account ( `biz_traderid`, `createtime`,`type`, `money`, `status`, `biz_catalog`,`biz_id`, remark )";
  981. $sqlTemp .= " select btr.biz_traderid, :nowtime , 0 , btr.feetotal, 1, 6 , tdwk.id, :remark222 ";
  982. $sqlTemp .= " from biz_todowork tdwk";
  983. $sqlTemp .= " left join biz_trader_recruit btr on btr.id=tdwk.biz_recruitid ";
  984. $sqlTemp .= $sqlTempE111 . ";";
  985. //商家支付会员违约金
  986. $sqlTemp .= " insert into biz_trader_account ( `biz_traderid`, `createtime`,`type`, `money`, `status`, `biz_catalog`,`biz_id`, remark )";
  987. $sqlTemp .= " select btr.biz_traderid, :nowtime , 1 , :tbreak_cutmoney, 1, 9 , tdwk.id, :remark222 ";
  988. $sqlTemp .= " from biz_todowork tdwk";
  989. $sqlTemp .= " left join biz_trader_recruit btr on btr.id=tdwk.biz_recruitid ";
  990. $sqlTemp .= $sqlTempE111 . ";";
  991. $sqlTemp .= " insert into biz_worker_account ( `biz_workerid`, `createtime`,`type`, `money`, `status`, `biz_catalog`,`biz_id`, remark )";
  992. $sqlTemp .= " select tdwk.biz_workerid , :nowtime , 0 , :tbreak_cutmoney, 1, 6 , tdwk.id, :remark222 ";
  993. $sqlTemp .= " from biz_todowork tdwk";
  994. $sqlTemp .= " left join biz_trader_recruit btr on btr.id=tdwk.biz_recruitid ";
  995. $sqlTemp .= $sqlTempE111 . ";";
  996. //必须后置
  997. $sqlTemp .= " update biz_todowork tdwk";
  998. $sqlTemp .= " left join biz_trader_recruit btr on btr.id=tdwk.biz_recruitid ";
  999. $sqlTemp .= " set tdwk.updatetime=:nowtime, tdwk.`status`=:tdwkstatus222, tdwk.remark=concat(:remark222,ifnull(tdwk.remark,''))";
  1000. $sqlTemp .= $sqlTempE111 . ";";
  1001. //--------------------------------------------------------------------------------------
  1002. $sqlTemp .= " insert into biz_recruit_break set createtime=:nowtime ";
  1003. $sqlTemp .= " , biz_recruitid=:biz_recruitid, `breakdate`=:breakdate";
  1004. $sqlTemp .= " , remark=:remark222;";
  1005. $backdata = pdo_query3($sqlTemp, $sqlParam);
  1006. return $backdata;
  1007. });
  1008. } catch (Throwable $ex) {
  1009. array_push($errMsgs, $ex->getMessage());
  1010. }
  1011. }
  1012. if (!empty($errMsgs)) {
  1013. throw new GeneralException("hasError", implode(" ", $errMsgs));
  1014. }
  1015. return true;
  1016. break;
  1017. case "grabDelegate":
  1018. $recruitId = isset($ajaxdata["recruitId"]) ? $ajaxdata["recruitId"] : $GPC["recruitId"];
  1019. if (intval($recruitId) <= 0) {
  1020. throw new GeneralException("", "没有传递必要的recruitId参数");
  1021. }
  1022. $bizArgs = array("handleMode" => $handleMode, "bizTrader2" => $bizTrader2);
  1023. $backdata = bizbase_recruitWorkLock($recruitId, 0, $bizArgs, function ($recruitId, $planDotime, $bizArgs, $mainRemain, $dateRemain, $restRemain, $pickDateList) {
  1024. $bizTrader2 = $bizArgs["bizTrader2"];
  1025. $recruitInfo = pdo_fetch("select * from biz_trader_recruit where id=" . intval($recruitId));
  1026. if (empty($recruitInfo)) {
  1027. throw new GeneralException("", "没有定位到招聘记录信息,请核查!");
  1028. }
  1029. if (intval($recruitInfo["status"]) != 2) {
  1030. throw new GeneralException("", "当前招聘信息已不是进行中状态,无法授权!");
  1031. }
  1032. $nowDelegate = bizTrader2_getRecuritDelegate($recruitId);
  1033. if (!empty($nowDelegate)) {
  1034. if (intval($nowDelegate["biz_trader2id"]) != intval($bizTrader2["id"])) {
  1035. throw new GeneralException("otherGrabed", "其他人已抢先获取到了此招聘的授权!");
  1036. }
  1037. } else {
  1038. $sqlParam = array();
  1039. $sqlParam[":nowtime"] = time();
  1040. $sqlParam[":biz_recruitid"] = $recruitInfo["id"];
  1041. $sqlParam[":biz_trader2id"] = intval($bizTrader2["id"]);
  1042. $sqlParam[":biz_traderid"] = intval($recruitInfo["biz_traderid"]);
  1043. $sqlParam[":finish_datetime"] = strtotime("+12hour");
  1044. $sqlParam[":remark"] = "授权";
  1045. $sqlTemp = " insert into biz_recruit_delegate set createtime=:nowtime ";
  1046. $sqlTemp .= " , biz_recruitid=:biz_recruitid, biz_trader2id=:biz_trader2id";
  1047. $sqlTemp .= " , biz_traderid=:biz_traderid";
  1048. $sqlTemp .= " , `begin_datetime`=:nowtime, `finish_datetime`=:finish_datetime";
  1049. $sqlTemp .= " , remark=:remark;";
  1050. $sqlTemp .= " select brd.*,btr.title as recuritTitle,bt.company_name ";
  1051. $sqlTemp .= " from biz_recruit_delegate brd ";
  1052. $sqlTemp .= " left join biz_trader_recruit btr on btr.id=brd.biz_recruitid ";
  1053. $sqlTemp .= " left join biz_trader bt on bt.id=btr.biz_traderid ";
  1054. $sqlTemp .= " where brd.id=LAST_INSERT_ID();";
  1055. $dataset = pdo_query3($sqlTemp, $sqlParam);
  1056. $nowDelegate = $dataset[count($dataset) - 1][0];
  1057. if (empty($nowDelegate)) {
  1058. throw new GeneralException("", "异常!");
  1059. }
  1060. }
  1061. $nowDelegate["begin_datetime"] = date("Y-m-d H:i:s", $nowDelegate["begin_datetime"]);
  1062. $nowDelegate["finish_datetime"] = date("Y-m-d H:i:s", $nowDelegate["finish_datetime"]);
  1063. return $nowDelegate;
  1064. });
  1065. return $backdata;
  1066. case "feeCalculate":
  1067. //提取必要参数
  1068. $bizId = isset($ajaxdata["bizId"]) ? $ajaxdata["bizId"] : $GPC["bizId"];
  1069. if (empty($bizId)) {
  1070. throw new GeneralException("", "没有传递必要的bizId参数");
  1071. }
  1072. //前置条件判定
  1073. $recruit = pdo_fetch("select btr.*,bt.certif_confirmed as bt_certif_confirmed
  1074. from biz_trader_recruit btr
  1075. left join biz_trader bt on bt.id=btr.biz_traderid
  1076. where btr.id=" . intval($bizId));
  1077. if (empty($recruit)) {
  1078. throw new GeneralException("", "此id对应的招聘信息记录不存在,请核查bizId是否正确!");
  1079. }
  1080. $platcutMode = isset($ajaxdata["platcutMode"]) ? $ajaxdata["platcutMode"] : $GPC["platcutMode"];
  1081. $platcutValue = isset($ajaxdata["platcutValue"]) ? $ajaxdata["platcutValue"] : $GPC["platcutValue"];
  1082. switch (intval($platcutMode)) {
  1083. case 0:
  1084. $plat_fetchrate = round(floatval($platcutValue), 2);
  1085. $plat_fetchmoney = round(floatval($recruit["feetotal"]) * $plat_fetchrate / 100, 2);
  1086. $plat_fetchmoney = $plat_fetchmoney < 0 ? 0 : $plat_fetchmoney;
  1087. break;
  1088. case 1:
  1089. $plat_fetchmoney = round(floatval($platcutValue), 2);
  1090. $plat_fetchmoney = $plat_fetchmoney < 0 ? 0 : $plat_fetchmoney;
  1091. $plat_fetchrate = round($plat_fetchmoney / floatval($recruit["feetotal"]) * 100, 2);
  1092. break;
  1093. default:
  1094. throw new GeneralException("", "platcutMode参数不正确!");
  1095. }
  1096. $sharecutMode = isset($ajaxdata["sharecutMode"]) ? $ajaxdata["sharecutMode"] : $GPC["sharecutMode"];
  1097. $sharecutValue = isset($ajaxdata["sharecutValue"]) ? $ajaxdata["sharecutValue"] : $GPC["sharecutValue"];
  1098. switch (intval($sharecutMode)) {
  1099. case 0:
  1100. $sharer_fetchrate = round(floatval($sharecutValue), 2);
  1101. $sharer_fetchmoney = round($plat_fetchmoney * $sharer_fetchrate / 100, 2);
  1102. $sharer_fetchmoney = $sharer_fetchmoney < 0 ? 0 : $sharer_fetchmoney;
  1103. break;
  1104. case 1:
  1105. $sharer_fetchmoney = round(floatval($sharecutValue), 2);
  1106. $sharer_fetchmoney = $sharer_fetchmoney < 0 ? 0 : $sharer_fetchmoney;
  1107. $sharer_fetchrate = round($sharer_fetchmoney / $plat_fetchmoney * 100, 2);
  1108. break;
  1109. default:
  1110. throw new GeneralException("", "platcutMode参数不正确!");
  1111. }
  1112. if (is_nan($plat_fetchrate)) {
  1113. $plat_fetchrate = "";
  1114. }
  1115. if (is_nan($plat_fetchmoney)) {
  1116. $plat_fetchmoney = "";
  1117. }
  1118. if (is_nan($sharer_fetchrate)) {
  1119. $sharer_fetchrate = "";
  1120. }
  1121. if (is_nan($sharer_fetchmoney)) {
  1122. $sharer_fetchmoney = "";
  1123. }
  1124. if ($plat_fetchrate == INF) {
  1125. $plat_fetchrate = "∞";
  1126. }
  1127. if ($plat_fetchmoney == INF) {
  1128. $plat_fetchmoney = "∞";
  1129. }
  1130. if ($sharer_fetchrate == INF) {
  1131. $sharer_fetchrate = "∞";
  1132. }
  1133. if ($sharer_fetchmoney == INF) {
  1134. $sharer_fetchmoney = "∞";
  1135. }
  1136. $salary_money = round(floatval($recruit["feetotal"]) - floatval($plat_fetchmoney), 2);
  1137. if (is_nan($salary_money)) {
  1138. $salary_money = "";
  1139. }
  1140. if ($salary_money == INF) {
  1141. $salary_money = "∞";
  1142. }
  1143. $backdata = array(
  1144. "plat_fetchrate" => $plat_fetchrate,
  1145. "plat_fetchmoney" => $plat_fetchmoney,
  1146. "sharer_fetchrate" => $sharer_fetchrate,
  1147. "sharer_fetchmoney" => $sharer_fetchmoney,
  1148. "salary_money" => $salary_money,
  1149. );
  1150. return $backdata;
  1151. break;
  1152. case "markshareByWorker":
  1153. $recruitId = isset($ajaxdata["recruitId"]) ? $ajaxdata["recruitId"] : $GPC["recruitId"];
  1154. if (empty($recruitId)) {
  1155. throw new GeneralException("", "没有传递必要的recruitId参数");
  1156. }
  1157. $recruitInfo = pdo_fetch("select * from biz_trader_recruit where id=" . intval($recruitId));
  1158. if (empty($recruitInfo)) {
  1159. throw new GeneralException("", "此id对应的招聘信息记录不存在,请核查recruitId是否正确!");
  1160. }
  1161. $sharerWorkerId = isset($ajaxdata["sharerWorkerId"]) ? $ajaxdata["sharerWorkerId"] : $GPC["sharerWorkerId"];
  1162. if (empty($sharerWorkerId)) {
  1163. throw new GeneralException("", "没有传递必要的sharerWorkerId参数");
  1164. }
  1165. $sharerWorker = pdo_fetch("select * from biz_worker where id=" . intval($sharerWorkerId));
  1166. if (empty($sharerWorker)) {
  1167. throw new GeneralException("", "分享者id没有对应的记录,请核查!");
  1168. }
  1169. $sqlTemp = "";
  1170. $sqlTemp .= " set @handle_id=0; ";
  1171. $sqlTemp .= " select @handle_id:=id from biz_sharelink bsl";
  1172. $sqlTemp .= " where bsl.deleted=0 and bsl.biz_catalog=:biz_catalog and bsl.biz_id=:biz_id and bsl.toerid=:toerid; ";
  1173. $sqlTemp .= " insert into biz_sharelink(`biz_catalog`, biz_id, toerid, fromerid, remark)";
  1174. $sqlTemp .= " select :biz_catalog,:biz_id,:toerid,:fromerid,:remark";
  1175. $sqlTemp .= " from dual where ifnull(@handle_id,0)=0 ;";
  1176. $sqlTemp .= " update biz_sharelink set fromerid=:fromerid, remark=concat(:remark,ifnull(remark,''))";
  1177. $sqlTemp .= " where ifnull(@handle_id,0)>0 and id=@handle_id;";
  1178. $backdata = pdo_query3($sqlTemp, array(
  1179. ":biz_catalog" => 0,
  1180. ":biz_id" => $recruitInfo["id"],
  1181. ":toerid" => $bizWorker["id"],
  1182. ":fromerid" => $sharerWorker["id"],
  1183. ":remark" => "[" . date("Y-m-d H:i:s", time()) . "] 绑定分享者" . $sharerWorker["true_name"] . "(ID:" . $sharerWorker["id"] . ") \n",
  1184. ));
  1185. return $backdata;
  1186. break;
  1187. default:
  1188. throw new GeneralException("", "不支持的handleMode!");
  1189. }
  1190. }
  1191. function bizbase_recruitFieldTrans($fromSubSystem, $direct, $data)
  1192. {
  1193. if ($direct == "FtoB") { //前端到后端数据转换
  1194. $data["requirements"] = json_encode($data["requirements"]);
  1195. } else { //后端到前端数据转换
  1196. $data["createtime"] = (intval($data["createtime"]) <= 0) ? "" : date("Y-m-d H:i:s", $data["createtime"]);
  1197. $data["updatetime"] = (intval($data["updatetime"]) <= 0) ? "" : date("Y-m-d H:i:s", $data["updatetime"]);
  1198. $data["settleType"] = (intval($data["settle_catalog"]) == 0 && intval($data["finish_datetime"]) > intval($data["begin_datetime"])); //1=完工结
  1199. $data["catalogName"] = $data["settleType"] ? "完工结" : (intval($data["settle_catalog"]) == 0 ? "日结" : "批量招聘");
  1200. $data["begin_datetime22"] = $data["begin_datetime"];
  1201. if (strtotime(date("Y-m-d", $data["begin_datetime22"])) < strtotime(date("Y-m-d", time()))) {
  1202. $data["begin_datetime22"] = strtotime(date("Y-m-d", time()));
  1203. }
  1204. $data["begin_datetime22"] = date("Y-m-d", $data["begin_datetime22"]);
  1205. $data["begin_datetime"] = (intval($data["begin_datetime"]) <= 0) ? "" : date("Y-m-d", $data["begin_datetime"]);
  1206. $data["finish_datetime"] = (intval($data["finish_datetime"]) <= 0) ? "" : date("Y-m-d", $data["finish_datetime"]);
  1207. $data["requirements"] = @json_decode($data["requirements"], true);
  1208. $data["work_addr1"] = @json_decode($data["work_addr1"], true);
  1209. $data["requirements"] = empty($data["requirements"]) ? array() : $data["requirements"];
  1210. $data["remark"] = trim(explode("\n", $data["remark"])[0]);
  1211. $data["statusName"] = bizbase_recruitStatusName($data["status"]);
  1212. //不用后端拼接,前端自己拼,否则提交保存就绝对化了 $data["profile_photo"] = bizbase_buildImgURL($data["profile_photo"]);
  1213. }
  1214. return $data;
  1215. }
  1216. function bizbase_recruitFieldAttrMap($fromSubSystem, $direct, $data)
  1217. {
  1218. $mapTable = array(
  1219. "urlImage" => "profile_photo",
  1220. "headline" => "title",
  1221. "kind" => "work_typename",
  1222. "work" => "work_duty",
  1223. "recruitingNumbers" => "need_total",
  1224. "salary" => "price",
  1225. "startTime" => "begin_datetime",
  1226. "finishTime" => "finish_datetime",
  1227. "startHour" => "begin_hour",
  1228. "finisHour" => "finish_hour",
  1229. "askFor" => "requirements",
  1230. "companyName" => "employer_name",
  1231. "linkman" => "linker_name",
  1232. "phone" => "linker_phone",
  1233. "companyAddress" => "employer_addr",
  1234. "longitude" => "work_addr_lng",
  1235. "latitude" => "work_addr_lat",
  1236. "job" => "work_detail",
  1237. "remark" => "work_remark",
  1238. );
  1239. if (intval($fromSubSystem) !== intval(SUBSYS_PLAT_PCWEB)) {
  1240. $mapTable = array();
  1241. }
  1242. foreach ($mapTable as $front => $backend) {
  1243. if ($direct == "FtoB") {
  1244. $src = $front;
  1245. $des = $backend;
  1246. } else {
  1247. $src = $backend;
  1248. $des = $front;
  1249. }
  1250. $data[$des] = (isset($data[$src]) ? $data[$src] : null);
  1251. unset($data[$src]);
  1252. }
  1253. //附加特殊情况
  1254. if ($direct == "FtoB") {
  1255. } else {
  1256. $data["arrivalTime"] = $data["startTime"];
  1257. $data["workingHours"] = $data["startTime"] . "--" . $data["finishTime"] . ";" . $data["startHour"] . "--" . $data["finisHour"];
  1258. $data["statusCode"] = intval($data["status"]);
  1259. $data["status"] = bizbase_recruitStatusName($data["statusCode"]);
  1260. switch (intval($data["statusCode"])) {
  1261. case 5:
  1262. $data["status"] = "手动下架";
  1263. break;
  1264. case 2:
  1265. case 4:
  1266. if (strtotime($data["finishTime"]) < strtotime(date("Y-m-d", time()))) {
  1267. $data["status"] = "到期自动下架 [" . $data["status"] . "]";
  1268. }
  1269. break;
  1270. }
  1271. }
  1272. return $data;
  1273. }
  1274. function bizbase_recruitStatusName($statusCode)
  1275. {
  1276. switch (intval($statusCode)) {
  1277. case 0:
  1278. $statusName = "待提交";
  1279. break;
  1280. case 1:
  1281. $statusName = "待审核";
  1282. break;
  1283. case 2:
  1284. $statusName = "已通过";
  1285. break;
  1286. case -1:
  1287. $statusName = "被驳回";
  1288. break;
  1289. case 3:
  1290. $statusName = "已终止";
  1291. break;
  1292. case -2:
  1293. $statusName = "已违约中断";
  1294. break;
  1295. case 4:
  1296. $statusName = "手工下架";
  1297. break;
  1298. case 5:
  1299. $statusName = "招满自动下架";
  1300. break;
  1301. case 6:
  1302. $statusName = "过期自动下架";
  1303. break;
  1304. default:
  1305. throw new GeneralException("", "招聘信息的状态码不正确!!");
  1306. }
  1307. return $statusName;
  1308. }
  1309. function bizbase_recruitDelegateInfo($data)
  1310. {
  1311. if (!empty(trim($data["delegate_info"]))) { //非空即有记录
  1312. $delegateInfo = explode("-", $data["delegate_info"]);
  1313. if (count($delegateInfo) < 7) {
  1314. throw new GeneralException("", "传递的delegate_info参数值不正确!");
  1315. }
  1316. //brd.id,'-',brd.begin_datetime,'-',brd.finish_datetime,'-',bt.id,'-',bu.id,'-',bu.mobile,'-',bt.true_name
  1317. $delegateId = $delegateInfo[0];
  1318. $beginDatetime = $delegateInfo[1];
  1319. $finishDatetime = $delegateInfo[2];
  1320. $bizTrader2Id = $delegateInfo[3];
  1321. $bizTrader2buId = $delegateInfo[4];
  1322. $bizTrader2buPhone = $delegateInfo[5];
  1323. $bizTrader2Name = "";
  1324. for ($iii = 6; $iii < count($delegateInfo); $iii++) {
  1325. if ($iii > 6) {
  1326. $bizTrader2Name .= "-";
  1327. }
  1328. $bizTrader2Name .= $delegateInfo[$iii];
  1329. }
  1330. }
  1331. return array(
  1332. "delegateId" => empty($delegateId) ? "" : $delegateId,
  1333. "beginDatetime" => empty($beginDatetime) ? "" : date("Y-m-d H:i:s", $beginDatetime),
  1334. "finishDatetime" => empty($finishDatetime) ? "" : date("Y-m-d H:i:s", $finishDatetime),
  1335. "bizTrader2Id" => empty($bizTrader2Id) ? "" : $bizTrader2Id,
  1336. "bizTrader2buId" => empty($bizTrader2buId) ? "" : $bizTrader2buId,
  1337. "bizTrader2buPhone" => empty($bizTrader2buPhone) ? "" : $bizTrader2buPhone,
  1338. "bizTrader2Name" => empty($bizTrader2Name) ? "" : $bizTrader2Name,
  1339. );
  1340. }
  1341. function bizbase_recruitWorkLock($recruitId, $workDate, $bizArgs, $bizHandle)
  1342. {
  1343. $params = array("recruitId" => $recruitId, "workDate" => $workDate, "bizArgs" => $bizArgs, "bizHandle" => $bizHandle);
  1344. $result = biz_flkForRecruit($recruitId, $params, function ($params) {
  1345. $recruitId = $params["recruitId"];
  1346. $workDate = $params["workDate"];
  1347. if (intval($workDate) <= 0) {
  1348. $workDate = 0;
  1349. }
  1350. $bizArgs = $params["bizArgs"];
  1351. $bizHandle = $params["bizHandle"];
  1352. $recuritRule = bizbase_fetchBaseConfig("RecuritRule", true);
  1353. //---------------------------------------
  1354. $sqlParam = array();
  1355. $sqlParam[":id"] = intval($recruitId);
  1356. $sqlParam[":workDateStart"] = strtotime(date("Y-m-d", $workDate));
  1357. $sqlParam[":workDateFinish"] = strtotime(date("Y-m-d 23:59:59", $workDate));
  1358. $sqlParam[":todayStart"] = strtotime(date("Y-m-d", time()));
  1359. $sqlTemp = "";
  1360. $sqlTemp .= " select btr.* ";
  1361. $sqlTemp .= " ,(select count(*) from biz_todowork btdw where btdw.biz_recruitid=:id and btdw.`status`=1) as main_worker_total1"; //总待录用数
  1362. //$sqlTemp .= " ,(select count(*) from biz_todowork btdw where btdw.biz_recruitid=:id and ( btdw.`status`=-1 or btdw.`status`=-3 or btdw.`status`>=2 )) as main_worker_total2"; //有效人次数
  1363. $sqlTemp .= " ,(select count(*) from biz_todowork btdw where btdw.biz_recruitid=:id and ( btdw.`status`=-3 or btdw.`status`>=2 )) as main_worker_total2"; //有效人次数 -1 被驳回
  1364. $sqlTemp .= " ,(select count(*) from biz_todowork btdw where btdw.biz_recruitid=:id and btdw.`status`=1 "; //当日待审数
  1365. $sqlTemp .= " and btdw.todo_begindate>=:workDateStart and btdw.todo_begindate<=:workDateFinish ) as date_worker_total1";
  1366. $sqlTemp .= " ,(select count(*) from biz_todowork btdw where btdw.biz_recruitid=:id and ( btdw.`status`=-1 or btdw.`status`=-3 or btdw.`status`>=2 ) "; //当日有效人次数
  1367. $sqlTemp .= " and btdw.todo_begindate>=:workDateStart and btdw.todo_begindate<=:workDateFinish ) as date_worker_total2";
  1368. $sqlTemp .= " ,(select count(*) from biz_todowork btdw where btdw.biz_recruitid=:id and ( btdw.`status`=-1 or btdw.`status`=-3 or btdw.`status`>=2 ) ";
  1369. $sqlTemp .= " and btdw.todo_begindate<:todayStart ) as history_worker_total"; //历史有效人次数
  1370. $sqlTemp .= " from biz_trader_recruit btr ";
  1371. $sqlTemp .= " where btr.id=:id;";
  1372. $recruit = pdo_fetch($sqlTemp, $sqlParam);
  1373. if (empty($recruit)) {
  1374. throw new GeneralException("", "没有定位到招聘记录信息,请核查!");
  1375. }
  1376. if (intval($recruit["deleted"]) != 0) {
  1377. throw new GeneralException("", "招聘记录信息已被删除,请核查!");
  1378. }
  1379. $remainNumTotal = intval($recruit["need_total"]);
  1380. $mainRemain = $remainNumTotal - intval($recruit["main_worker_total2"]);
  1381. if ($mainRemain < 0) {
  1382. throw new GeneralException("", "怎么出现了总体报冒了的情况呢(含次数扣减),请核查!");
  1383. }
  1384. //还可溢报的总人数(非单天)
  1385. $mainRemain = intval($mainRemain * intval($recuritRule["enroll_overate"])) - intval($recruit["main_worker_total1"]);
  1386. //还可录用的总人数(非单天)
  1387. $mainRemain2 = $remainNumTotal - intval($recruit["main_worker_total2"]);
  1388. $breakdateList = pdo_fetchall("select breakdate from biz_recruit_break where biz_recruitid=" . intval($recruit["id"]));
  1389. $breakdateSet = array();
  1390. foreach ($breakdateList as $breakdate) {
  1391. $breakdateSet[strtotime(date("Y-m-d", $breakdate["breakdate"]))] = date("Y-m-d", $breakdate["breakdate"]);
  1392. }
  1393. $pickDateList = array();
  1394. if (intval($recruit["settle_catalog"]) <= 0) {
  1395. $startWorkDate = strtotime(date("Y-m-d", $recruit["begin_datetime"]));
  1396. if (!isset($breakdateSet[$startWorkDate])) {
  1397. $pickDateList[$startWorkDate] = date("Y-m-d", $startWorkDate);
  1398. }
  1399. $lastDayNeedTotal = $remainNumTotal;
  1400. } else {
  1401. $restRemain = $remainNumTotal - intval($recruit["history_worker_total"]);
  1402. if ($restRemain < 0) {
  1403. throw new GeneralException("", "怎么出现了历史报冒了的情况呢(含次数扣减),请核查!");
  1404. }
  1405. if (intval($recruit["need_perday"]) <= 0) {
  1406. throw new GeneralException("", "怎么出现了每日需求人数小于等于0的情况呢,请核查!");
  1407. }
  1408. $days = ceil($restRemain / intval($recruit["need_perday"]));
  1409. $lastDayNeedTotal = $restRemain % intval($recruit["need_perday"]);
  1410. if ($lastDayNeedTotal <= 0) {
  1411. $lastDayNeedTotal = intval($recruit["need_perday"]);
  1412. }
  1413. if (strtotime(date("Y-m-d", $recruit["begin_datetime"])) <= strtotime(date("Y-m-d", time()))) {
  1414. $startWorkDate = strtotime(date("Y-m-d", time()));
  1415. } else {
  1416. $startWorkDate = strtotime(date("Y-m-d", $recruit["begin_datetime"]));
  1417. }
  1418. do {
  1419. if (!isset($breakdateSet[$startWorkDate])) {
  1420. $pickDateList[$startWorkDate] = date("Y-m-d", $startWorkDate);
  1421. }
  1422. $startWorkDate = strtotime("+1day", strtotime(date("Y-m-d", $startWorkDate)));
  1423. } while (count($pickDateList) < $days);
  1424. }
  1425. //----------------------------------------------------------------------
  1426. if (empty($pickDateList) && (intval($recruit["status"]) == 2)) {
  1427. $sqlParam = array();
  1428. $sqlParam[":id"] = $recruit["id"];
  1429. $sqlParam[":nowtime"] = time();
  1430. $sqlParam[":status"] = -2; //0-待提交;1-已提交待审核发布;2-已审核;-1-被驳回;3-已终止;-2-违约中断;
  1431. $sqlParam[":remark"] = "[" . date("Y-m-d H:i:s", time()) . "] 违约中断,已无可报名日期 \n";
  1432. $sqlTemp = " update biz_trader_recruit set updatetime=:nowtime,istop=0 ";
  1433. $sqlTemp .= " ,`status`=:status, remark=concat(:remark,ifnull(remark,''))";
  1434. $sqlTemp .= " where id=:id;";
  1435. pdo_query($sqlTemp, $sqlParam);
  1436. }
  1437. //-------------------------------------------------------------------------
  1438. if (intval($workDate) > 0 && $bizArgs["handleMode"] != "enrollCancel") {
  1439. if (intval($recruit["settle_catalog"]) <= 0) { //非批量模式下,单天无限制
  1440. $dateRemain = 999; //还可溢报的总人数(单天)
  1441. $dateRemain2 = 999; //还可录用的总人数(单天)
  1442. } else { //批量模式下,单天限制提取逻辑
  1443. $workDate = strtotime(date("Y-m-d", $workDate));
  1444. if ($workDate < strtotime(date("Y-m-d", time()))) {
  1445. throw new GeneralException("", "报名日期不能小于今天啊!");
  1446. }
  1447. $workDateMatch = false;
  1448. $workDateMatchIndex = 0;
  1449. foreach ($pickDateList as $pickdateKey => $pickdateVal) {
  1450. $workDateMatchIndex++;
  1451. if ($pickdateKey == $workDate) {
  1452. $workDateMatch = true;
  1453. break;
  1454. }
  1455. }
  1456. if ($workDateMatch == false) {
  1457. throw new GeneralException("", "报名日期不在可选择的日期范围内!");
  1458. }
  1459. $need_perday = intval($recruit["need_perday"]);
  1460. if ($workDateMatchIndex == count($pickDateList)) {
  1461. $need_perday = $lastDayNeedTotal;
  1462. }
  1463. $dateRemain = $need_perday - intval($recruit["date_worker_total2"]);
  1464. if ($dateRemain < 0) {
  1465. throw new GeneralException("", "怎么出现了单天报冒了的情况呢333,请核查!");
  1466. }
  1467. //还可溢报的总人数(单天)
  1468. $dateRemain = intval($dateRemain * intval($recuritRule["enroll_overate"])) - intval($recruit["date_worker_total1"]);
  1469. //还可录用的总人数(单天)
  1470. $dateRemain2 = $need_perday - intval($recruit["date_worker_total2"]);
  1471. }
  1472. }
  1473. $result = $bizHandle($recruitId, $workDate, $bizArgs, $mainRemain, $dateRemain, $restRemain, $pickDateList, $mainRemain2, $dateRemain2);
  1474. return $result;
  1475. });
  1476. return $result;
  1477. }
  1478. function bizbase_recruitAboutQuery($fromSubSystem, $baseUser, $bizUser, $handleMode, $pageIndex, $pageSize, $ajaxdata, $GPC)
  1479. {
  1480. if (intval($baseUser["subsystem"]) == SUBSYS_LABOUR_MINA) {
  1481. $bizWorker = $bizUser;
  1482. }
  1483. if (intval($baseUser["subsystem"]) == SUBSYS_CAPITAL_MINA) {
  1484. $bizTrader = $bizUser;
  1485. }
  1486. if (intval($baseUser["subsystem"]) == SUBSYS_CAPITAL2_MINA) {
  1487. $bizTrader2 = $bizUser;
  1488. }
  1489. switch ($handleMode) {
  1490. case "fetchallByPlater":
  1491. case "fetchallByWorker":
  1492. case "fetchallByTrader":
  1493. case "fetchallByTrader2":
  1494. case "fetchallByPublicer":
  1495. case "fetchallDelegateByTrader":
  1496. $sqlBody = "";
  1497. $sqlSelectExt = "";
  1498. $exportExcel = isset($ajaxdata["exportExcel"]) ? $ajaxdata["exportExcel"] : $GPC["exportExcel"];
  1499. $sqlParam = array();
  1500. //查询处理
  1501. $query = isset($ajaxdata["query"]) ? $ajaxdata["query"] : $GPC["query"];
  1502. $query = empty(trim($exportExcel)) ? $query : json_decode($query, true);
  1503. // $pageData = pdo_fetchall("select * from biz_trader_recruit order by id desc ", array());
  1504. // print_r($pageData);die;
  1505. if (empty($query) && !is_array($query)) { //验证一下query信息集
  1506. $query = " and 1=1 ";
  1507. } else {
  1508. $queryNew = " and 1=1 ";
  1509. foreach ($query as $fdName => $fdValue) {
  1510. switch ($fdName) {
  1511. case "title":
  1512. if (empty(trim($fdValue))) {
  1513. continue;
  1514. }
  1515. $paramName = ":qy_title";
  1516. $queryNew .= " and (btr.title like concat('%',{$paramName},'%') ) ";
  1517. $sqlParam[$paramName] = $fdValue;
  1518. break;
  1519. case "companyName":
  1520. if (empty(trim($fdValue))) {
  1521. continue;
  1522. }
  1523. $paramName = ":qy_companyName";
  1524. $queryNew .= " and (bt.company_name like concat('%',{$paramName},'%') ) ";
  1525. $sqlParam[$paramName] = $fdValue;
  1526. break;
  1527. case "workCity":
  1528. if (empty(trim($fdValue))) {
  1529. continue;
  1530. }
  1531. $paramName = ":qy_workCity";
  1532. $queryNew .= " and (btr.work_addr like concat('%',{$paramName},'%') ) ";
  1533. $sqlParam[$paramName] = $fdValue;
  1534. break;
  1535. case "workArea":
  1536. if (empty($fdValue)) {
  1537. continue;
  1538. }
  1539. $queryNew .= " and ( 1=0 ";
  1540. foreach ($fdValue as $index => $subquery) {
  1541. $paramName = ":qy_workArea_" . intval($index);
  1542. $queryNew .= " or btr.work_addr like concat('%',{$paramName},'%') ";
  1543. $sqlParam[$paramName] = $subquery;
  1544. }
  1545. $queryNew .= " ) ";
  1546. break;
  1547. case "traceMode":
  1548. if (empty(trim($fdValue))) {
  1549. continue;
  1550. }
  1551. switch (intval($fdValue)) {
  1552. case 1:
  1553. if (!empty($bizWorker)) {
  1554. $queryNew .= " and (select count(*) from biz_worker_trace where biz_workerid=" . intval($bizWorker["id"]) . " and biz_catalog=0 and biz_id=btr.id)>0 ";
  1555. }
  1556. break;
  1557. }
  1558. break;
  1559. case "settleType":
  1560. if (empty(trim($fdValue))) {
  1561. continue;
  1562. }
  1563. switch (intval($fdValue)) {
  1564. case 1:
  1565. $queryNew .= " and ( btr.`settle_catalog`=1 or (btr.`settle_catalog`=0 and btr.finish_datetime=btr.begin_datetime)) ";
  1566. break;
  1567. case 2:
  1568. $queryNew .= " and (btr.`settle_catalog`=0 and btr.finish_datetime>btr.begin_datetime) ";
  1569. break;
  1570. }
  1571. break;
  1572. case "genderMode":
  1573. if (empty(trim($fdValue))) {
  1574. continue;
  1575. }
  1576. switch (intval($fdValue)) {
  1577. case 1:
  1578. $queryNew .= " and (btr.`gender_mode`=1) ";
  1579. break;
  1580. case 2:
  1581. $queryNew .= " and (btr.`gender_mode`=2) ";
  1582. break;
  1583. }
  1584. break;
  1585. case "nowUrgent":
  1586. if (empty(trim($fdValue))) {
  1587. continue;
  1588. }
  1589. $tempTemp = " ( ";
  1590. // $tempTemp .=" btr.`settle_catalog`=0 and btr.`urgent_level`>0 ";
  1591. $tempTemp .= " btr.`urgent_level`=1 ";
  1592. // $tempTemp .=" and btr.finish_datetime<=btr.begin_datetime and btr.begin_datetime=".strtotime(date('Y-m-d',time()));
  1593. // $tempTemp .=" and btr.begin_datetime=".strtotime(date('Y-m-d',time()));
  1594. //这里是测试
  1595. $tempTemp .= " ) ";
  1596. switch (intval($fdValue)) {
  1597. case 1:
  1598. $queryNew .= " and ( urgent_level=1 ) ";
  1599. $sqlParam[":query_nowdate_new_ma"] = date('YmdHi', (time() - 60 * 60 * 24 * 3));
  1600. break;
  1601. case 2:
  1602. $queryNew .= " and ( urgent_level=0 )";
  1603. $sqlParam[":query_nowdate_new_ma"] = date('YmdHi', time());
  1604. break;
  1605. }
  1606. break;
  1607. case "status":
  1608. $queryStatusCode = intval($fdValue);
  1609. switch (intval($fdValue)) {
  1610. case 1:
  1611. $queryNew .= " and btr.`status`=0 ";
  1612. break;
  1613. case 2:
  1614. $queryNew .= " and btr.`status`=1 ";
  1615. break;
  1616. case 3:
  1617. $queryNew .= " and btr.`status`>=2 ";
  1618. break;
  1619. case 4:
  1620. $queryNew .= " and btr.`status`=-1 ";
  1621. break;
  1622. case 91: //待上线
  1623. $queryNew .= " and (btr.`status`<2) ";
  1624. break;
  1625. case 92: //招聘中
  1626. $queryNew .= " and (btr.`status`=2) ";
  1627. break;
  1628. case 93: //其他
  1629. $queryNew .= " and (btr.`status`>2 or btr.`status`=-1 or btr.`status`=-2) ";
  1630. break;
  1631. //判断查看招聘 ,开工日期,没有到开工日期就在查看招聘
  1632. // 到开工日期就在查看工作
  1633. }
  1634. break;
  1635. case "startDate":
  1636. if (empty(trim($fdValue))) {
  1637. continue;
  1638. }
  1639. $queryNew .= " and btr.begin_datetime>=" . strtotime(date("Y-m-d", strtotime($fdValue))) . " ";
  1640. break;
  1641. case "trader2Id":
  1642. if (empty(trim($fdValue))) {
  1643. continue;
  1644. }
  1645. $queryNew .= " and brd.biz_trader2id=" . intval($fdValue) . " ";
  1646. break;
  1647. case "verifyTime":
  1648. if (empty(trim($fdValue))) {
  1649. continue;
  1650. }
  1651. $queryNew .= " and brd.finish_datetime>=" . strtotime($fdValue) . " ";
  1652. break;
  1653. case "finishDate":
  1654. if (empty(trim($fdValue))) {
  1655. continue;
  1656. }
  1657. $queryNew .= " and btr.begin_datetime<=" . strtotime(date("Y-m-d", strtotime($fdValue))) . " ";
  1658. break;
  1659. case "mobile":
  1660. if (empty(trim($fdValue))) {
  1661. continue;
  1662. }
  1663. $paramName = ":qy_mobile";
  1664. $queryNew .= " and (bu.mobile like concat('%',{$paramName},'%') ) ";
  1665. $sqlParam[$paramName] = $fdValue;
  1666. break;
  1667. case "downed":
  1668. if (empty(trim($fdValue))) {
  1669. continue;
  1670. }
  1671. switch (intval($fdValue)) {
  1672. case 1:
  1673. $queryNew .= " and btr.`status`<>4 ";
  1674. break;
  1675. case 2:
  1676. $queryNew .= " and btr.`status`=4 ";
  1677. break;
  1678. }
  1679. break;
  1680. case "isDsiplay":
  1681. if ($fdValue == 1) {
  1682. $queryNew .= " and btr.`status` = 2 ";
  1683. } elseif ($fdValue == 0) {
  1684. $queryNew .= " and btr.`status` <> 2 ";
  1685. } else {
  1686. continue;
  1687. }
  1688. break;
  1689. }
  1690. }
  1691. $query = $queryNew;
  1692. }
  1693. $sqlWorkerTotal = " (select count(*) from biz_todowork btdw where btdw.biz_recruitid=btr.id and ( btdw.`status`>=2 or btdw.`status`=-1 or btdw.`status`=-3 ) ) ";
  1694. $sqlParam[":select_nowdate"] = strtotime(date("Y-m-d", time()));
  1695. switch ($handleMode) {
  1696. case "fetchallByWorker":
  1697. case "fetchallByPublicer":
  1698. // 这是是修改 会员端
  1699. //$query .= " and ((btr.settle_catalog=0 and btr.begin_time_new >= :query_nowdate_new_ma) or (btr.settle_catalog=1)) ";
  1700. $query .= " and (";
  1701. $query .= "(btr.settle_catalog=0 and btr.begin_time_new >= :query_nowdate_new_ma) or";
  1702. $query .= "(btr.settle_catalog=1 and btr.end_time_new>=:query_nowdate_new_ma)";
  1703. $query .= ")";
  1704. $query .= " and {$sqlWorkerTotal}<btr.need_total "; //肯定筛选掉已录满(含次数扣减)的招聘记录
  1705. if (!empty($bizWorker)) { //非商户用户,则屏蔽当前用户已报名的招聘记录
  1706. //$query.=" and (select count(*) from biz_todowork btdw where btdw.biz_recruitid=btr.id and btdw.biz_workerid=".intval($bizWorker["id"])." ) <=0 ";
  1707. }
  1708. break;
  1709. case "fetchallByTrader":
  1710. case "fetchallDelegateByTrader":
  1711. $query .= " and btr.biz_traderid=" . intval($bizTrader["id"]) . " ";
  1712. break;
  1713. case "fetchallByTrader2":
  1714. $query .= " and brd.biz_trader2id=" . intval($bizTrader2["id"]) . " ";
  1715. break;
  1716. case "fetchallByPlater":
  1717. unset($sqlParam[':query_nowdate_new_ma']);
  1718. break;
  1719. }
  1720. $nowLngLat = isset($ajaxdata["nowLngLat"]) ? $ajaxdata["nowLngLat"] : $GPC["nowLngLat"];
  1721. if (!empty($nowLngLat)) {
  1722. if (!preg_match("/^\d+\.\d+,\d+\.\d+$/", $nowLngLat)) {
  1723. throw new GeneralException("", "nowLngLat经纬度格式不正确(经度,纬度)");
  1724. }
  1725. $sqlParam[":nowlng"] = floatval(explode(",", $nowLngLat)[0]);
  1726. $sqlParam[":nowlat"] = floatval(explode(",", $nowLngLat)[1]);
  1727. $sqlSelectExt .= ' ,(st_distance_sphere(point(CAST(btr.work_addr_lng AS decimal(11,8)),CAST(btr.work_addr_lat AS decimal(11,8))),point(CAST(:nowlng AS decimal(11,8)),CAST(:nowlat AS decimal(11,8))))) as distance ';
  1728. }
  1729. //排序处理
  1730. $orderby = isset($ajaxdata["orderby"]) ? $ajaxdata["orderby"] : $GPC["orderby"];
  1731. switch (intval($orderby)) {
  1732. case 0: //最新发布倒序排序
  1733. $orderby = " order by btr.istop desc,btr.id desc ";
  1734. break;
  1735. case 1: //距离排序
  1736. if (empty($nowLngLat) || !preg_match("/^\d+\.\d+,\d+\.\d+$/", $nowLngLat)) {
  1737. throw new GeneralException("", "没有传递必要的nowLngLat参数,或者经纬度格式不正确(经度,纬度)");
  1738. }
  1739. $orderby = " order by btr.istop desc,distance asc ";
  1740. break;
  1741. case 2: //薪资大小排序
  1742. $orderby = " order by btr.istop desc,btr.salary desc ";
  1743. break;
  1744. case 91: //最新发布倒序排序
  1745. $orderby = " order by btr.id desc ";
  1746. break;
  1747. case 92: //足迹倒序
  1748. $orderby = " order by wktr.id desc ";
  1749. break;
  1750. default:
  1751. $orderby = " order by btr.istop desc,btr.id desc ";
  1752. break;
  1753. }
  1754. // print_r($sqlBody);die;
  1755. //构建sql串
  1756. // $sqlBody.=" from biz_trader_recruit as btr ";
  1757. //$sqlBody .= " FROM (SELECT *, CONCAT(FROM_UNIXTIME(begin_datetime,\"%Y%m%d\"), REPLACE(begin_hour,':','')) AS begin_time_new, FROM biz_trader_recruit ) btr ";
  1758. $sqlBody .= " FROM (SELECT *,";
  1759. $sqlBody .= " CONCAT(FROM_UNIXTIME(begin_datetime,\"%Y%m%d\"), REPLACE(begin_hour,':','')) AS begin_time_new,";
  1760. $sqlBody .= " CONCAT(FROM_UNIXTIME(finish_datetime,\"%Y%m%d\"), REPLACE(begin_hour2,':','')) AS end_time_new";
  1761. $sqlBody .= " FROM biz_trader_recruit ) btr ";
  1762. $sqlBody .= " left join biz_trader bt on bt.id=btr.biz_traderid ";
  1763. $sqlBody .= " left join base_user bu on bu.id=bt.base_userid ";
  1764. $sqlBody .= " left join biz_recruit_delegate brd on brd.biz_recruitid=btr.id and brd.finish_datetime>" . time();
  1765. $sqlBody .= " left join biz_trader2 bt2 on bt2.id=brd.biz_trader2id ";
  1766. $sqlBody .= " left join base_user bt2bu on bt2bu.id=bt2.base_userid ";
  1767. $sqlBody .= " left join biz_worker_trace wktr on wktr.biz_workerid=" . intval($bizWorker["id"]) . " and wktr.biz_catalog=0 and wktr.biz_id=btr.id ";
  1768. $sqlBody .= " where 1=1 and btr.`deleted`=0 ";
  1769. $sqlBody .= $query;
  1770. //查询sql及统计sql
  1771. $sqlFetch = " select btr.* ";
  1772. $sqlFetch .= " ,round((btr.finish_datetime-:select_nowdate)/86400) as restdays ";
  1773. $sqlFetch .= " ,bt.id as btid,bt.company_name,bt.catalog as bt_catalog,bt.certif_confirmed as bt_certif_confirmed ";
  1774. $sqlFetch .= " ,bu.id as buid,bu.mobile bu_mobile ";
  1775. $sqlFetch .= " ,concat(brd.id,'-',brd.begin_datetime,'-',brd.finish_datetime,'-',bt2.id,'-',bt2bu.id,'-',bt2bu.mobile,'-',bt2.true_name) as delegate_info ";
  1776. $sqlFetch .= " ,(select count(*) from biz_todowork btdw where btdw.biz_recruitid=btr.id and ( btdw.`status`>=2 ) ) as now_worker_total";
  1777. $sqlFetch .= " ,(select count(*) from biz_todowork btdw where btdw.biz_recruitid=btr.id and ( btdw.`status`>=1 ) ) as now_worker_total000"; //已报及有效报名人数/无效报名次数扣减总数
  1778. $sqlFetch .= " ,(select count(*) from biz_todowork btdw where btdw.biz_recruitid=btr.id and ( btdw.`status`=-1 or btdw.`status`=-3 ) ) as num_abnormal_total ";
  1779. $sqlFetch .= " {$sqlSelectExt} {$sqlBody} {$orderby} ";
  1780. $exportExcel = isset($ajaxdata["exportExcel"]) ? $ajaxdata["exportExcel"] : $GPC["exportExcel"];
  1781. if (trim($exportExcel) != "true") { //正常输出
  1782. $start = (intval($pageIndex) - 1) * $pageSize;
  1783. $sqlFetch .= " limit {$start},{$pageSize} ";
  1784. $pageData = pdo_fetchall($sqlFetch, $sqlParam);
  1785. foreach ($pageData as &$item) { //后端到前端数据转换
  1786. $delegateInfo = bizbase_recruitDelegateInfo($item);
  1787. foreach ($delegateInfo as $key => $val) {
  1788. $item["delegate_" . $key] = $val;
  1789. }
  1790. unset($item["delegate_info"]);
  1791. $item = bizbase_recruitFieldTrans(1, "BtoF", $item); //状态码 映射
  1792. //----------------------------------------------
  1793. if ($handleMode == "fetchallByTrader" && intval($queryStatusCode) == 92) {
  1794. $sqlTemp = "";
  1795. $sqlTemp .= " set @handle_id=0; ";
  1796. $sqlTemp .= " select @handle_id:=id from biz_basetrace bbt";
  1797. $sqlTemp .= " where bbt.deleted=0 and bbt.biz_catalog=:biz_catalog and bbt.biz_id=:recruitid and bbt.biz_usertype=:biz_usertype and bbt.biz_userid=:biz_userid; ";
  1798. $sqlTemp .= " insert into biz_basetrace(`biz_catalog`, biz_id, biz_usertype, biz_userid, count)";
  1799. $sqlTemp .= " select :biz_catalog,:recruitid,:biz_usertype,:biz_userid, 1";
  1800. $sqlTemp .= " from dual where ifnull(@handle_id,0)=0 ;";
  1801. $backdata = pdo_query3($sqlTemp, array(
  1802. ":recruitid" => $item["id"],
  1803. ":biz_catalog" => 2,
  1804. ":biz_usertype" => 1,
  1805. ":biz_userid" => $bizTrader["id"],
  1806. ));
  1807. }
  1808. $bizId = $item['id'];
  1809. $item['todo_list'] = [];
  1810. if ($item['now_worker_total000'] > 0) {
  1811. $sql = "select bw.id,bw.profile_photo from biz_trader_recruit as btr
  1812. join biz_todowork as bt on btr.id=bt.biz_recruitid and bt.`status`>=1
  1813. join biz_worker as bw on bw.id =bt.biz_workerid
  1814. where btr.id=:btrid limit 3";
  1815. $item['todo_list'] = pdo_fetchall($sql, array(
  1816. ":btrid" => intval($bizId),
  1817. ));
  1818. }
  1819. }
  1820. $sqlSummary = " select count(*) as count " . $sqlBody;
  1821. unset($sqlParam[":select_nowdate"]);
  1822. unset($sqlParam[":nowlng"]);
  1823. unset($sqlParam[":nowlat"]);
  1824. $sumData = pdo_fetch($sqlSummary, $sqlParam);
  1825. return array(
  1826. "pageData" => $pageData,
  1827. "count" => intval($sumData["count"]),
  1828. );
  1829. } else {
  1830. $nowlng = $sqlParam[":nowlng"];
  1831. $nowlat = $sqlParam[":nowlat"];
  1832. $select_nowdate = $sqlParam[":select_nowdate"];
  1833. unset($sqlParam[":nowlng"]);
  1834. unset($sqlParam[":nowlat"]);
  1835. unset($sqlParam[":select_nowdate"]);
  1836. $sqlSummary = " select count(*) as count " . $sqlBody;
  1837. $sumData = pdo_fetch($sqlSummary, $sqlParam);
  1838. $recordTotal = intval($sumData["count"]);
  1839. $pageTotal = ceil($recordTotal / $pageSize);
  1840. if (!empty($nowlng)) {
  1841. $sqlParam[":nowlng"] = $nowlng;
  1842. }
  1843. if (!empty($nowlat)) {
  1844. $sqlParam[":nowlat"] = $nowlat;
  1845. }
  1846. if (!empty($select_nowdate)) {
  1847. $sqlParam[":select_nowdate"] = $select_nowdate;
  1848. }
  1849. $args = array(
  1850. "pageIndex" => 0, "pageSize" => $pageSize, "pageTotal" => $pageTotal,
  1851. "sqlFetch" => $sqlFetch, "sqlParam" => $sqlParam,
  1852. );
  1853. $csvTitle = array("标题", "商家名称", "联系电话", "人数", "费用", "开始日期");
  1854. baseexcel_exportCsv("招聘列表", $csvTitle, $args, function ($args) {
  1855. $pageIndex = intval($args["pageIndex"]) + 1;
  1856. $args["pageIndex"] = $pageIndex;
  1857. $pageSize = intval($args["pageSize"]);
  1858. $pageTotal = intval($args["pageTotal"]);
  1859. if ($pageIndex > $pageTotal) {
  1860. return false;
  1861. }
  1862. $sqlFetch = $args["sqlFetch"];
  1863. $sqlParam = $args["sqlParam"];
  1864. $start = (intval($pageIndex) - 1) * $pageSize;
  1865. $pageData111 = pdo_fetchall($sqlFetch . " limit {$start},{$pageSize} ", $sqlParam);
  1866. $pageData = array();
  1867. foreach ($pageData111 as &$rowdata) { //数据转换/映射
  1868. $rowdata["sn"] = base_buildSNById("RP", $rowdata["id"]);
  1869. $id = base_fetchIdBySN($rowdata["sn"]);
  1870. $pageData[] = array(
  1871. $rowdata["title"], $rowdata["company_name"], "\t" . $rowdata["bu_mobile"],
  1872. $rowdata["need_total"], round($rowdata["feetotal"], 2),
  1873. "\t" . date("Y-m-d H:i:s", $rowdata["begin_datetime"]),
  1874. );
  1875. }
  1876. return array("pagedata" => $pageData, "args" => $args);
  1877. });
  1878. }
  1879. break;
  1880. default:
  1881. throw new GeneralException("", "不支持的handleMode!");
  1882. }
  1883. }
  1884. /**********************工作流程相关逻辑**************************************/
  1885. function bizbase_todoWorkEntityHandle($fromSubSystem, $baseUser, $bizUser, $handleMode, $ajaxdata, $GPC)
  1886. {
  1887. if (intval($baseUser["subsystem"]) == SUBSYS_LABOUR_MINA) {
  1888. $bizWorker = $bizUser;
  1889. }
  1890. if (intval($baseUser["subsystem"]) == SUBSYS_CAPITAL_MINA) {
  1891. $bizTrader = $bizUser;
  1892. }
  1893. if (intval($baseUser["subsystem"]) == SUBSYS_CAPITAL2_MINA) {
  1894. $bizTrader2 = $bizUser;
  1895. }
  1896. switch ($handleMode) {
  1897. case "UpdateIsDelete":
  1898. $trader_recruit_id = isset($ajaxdata["trader_recruit_id"]) ? $ajaxdata["trader_recruit_id"] : $GPC["trader_recruit_id"];
  1899. if (intval($trader_recruit_id) <= 0) {
  1900. throw new GeneralException("", "没有传递必要的recruitId参数或参数值不正确");
  1901. }
  1902. $sqlParam = array();
  1903. $sqlParam[":id"] = $trader_recruit_id;
  1904. $sqlTemp = "";
  1905. $sqlTemp .= " update biz_trader_recruit set is_delete = 1";
  1906. $sqlTemp .= " where id=:id;";
  1907. $backdata = pdo_query3($sqlTemp, $sqlParam);
  1908. return $backdata;
  1909. break;
  1910. case "openTeam":
  1911. throw new GeneralException("", "非常抱歉,本平台已不再支持团组报名,请直接单独报名吧!");
  1912. bizbase_verifyUserAccount($bizWorker, true, "无法开团组队");
  1913. $recruitId = isset($ajaxdata["recruitId"]) ? $ajaxdata["recruitId"] : $GPC["recruitId"];
  1914. if (intval($recruitId) <= 0) {
  1915. throw new GeneralException("", "没有传递必要的recruitId参数或参数值不正确");
  1916. }
  1917. $recruitInfo = pdo_fetch("select * from biz_trader_recruit where id=" . intval($recruitId));
  1918. if (empty($recruitInfo)) {
  1919. throw new GeneralException("", "没有定位到招聘记录信息,请核查!");
  1920. }
  1921. $planDotime = isset($ajaxdata["planDotime"]) ? $ajaxdata["planDotime"] : $GPC["planDotime"];
  1922. $planDotime = strtotime($planDotime);
  1923. if (intval($recruitInfo["settle_catalog"]) <= 0) {
  1924. $planDotime = intval($recruitInfo["begin_datetime"]);
  1925. } else if (intval($planDotime) <= 0) {
  1926. throw new GeneralException("", "批量招聘模式下必须传递报名干活的日期planDotime,请核查!");
  1927. }
  1928. if (strtotime(date("Y-m-d", $planDotime)) < strtotime(date("Y-m-d", time()))) {
  1929. throw new GeneralException("", "报名日期不能小于今日啊,请核查!");
  1930. }
  1931. //$sharerWorkerId = isset($ajaxdata["sharerWorkerId"]) ? $ajaxdata["sharerWorkerId"] : $GPC["sharerWorkerId"];
  1932. $sharerWorkerId = pdo_fetchcolumn("select fromerid from biz_sharelink
  1933. where deleted=0 and biz_catalog=0 and biz_id=:biz_id and toerid=:toerid order by id desc limit 1;", array(
  1934. ":biz_id" => $recruitInfo["id"],
  1935. ":toerid" => $bizWorker["id"],
  1936. ));
  1937. $sharerWorkerId = intval($sharerWorkerId);
  1938. if ($sharerWorkerId == intval($bizWorker["id"])) {
  1939. $sharerWorkerId = 0;
  1940. }
  1941. if ($sharerWorkerId > 0) {
  1942. $sharerWorker = pdo_fetch("select * from biz_worker where id=" . intval($sharerWorkerId));
  1943. if (empty($sharerWorker)) {
  1944. throw new GeneralException("", "分享者id没有对应的记录,请核查!");
  1945. }
  1946. }
  1947. $bizArgs = array("handleMode" => $handleMode, "bizWorker" => $bizWorker, "recruitInfo" => $recruitInfo, "sharerWorkerId" => $sharerWorkerId);
  1948. $backdata = bizbase_recruitWorkLock($recruitId, $planDotime, $bizArgs, function ($recruitId, $planDotime, $bizArgs, $mainRemain, $dateRemain, $restRemain) {
  1949. $handleMode = $bizArgs["handleMode"];
  1950. $bizWorker = $bizArgs["bizWorker"];
  1951. $recruitInfo = $bizArgs["recruitInfo"];
  1952. $sharerWorkerId = $bizArgs["sharerWorkerId"];
  1953. if ($mainRemain <= 0) {
  1954. throw new GeneralException("hasMainOverflow", "此招聘已报满");
  1955. }
  1956. if ($dateRemain <= 0) {
  1957. throw new GeneralException("hasDateOverflow", "此招聘报名日期已报满!");
  1958. }
  1959. if ($mainRemain < 2) {
  1960. throw new GeneralException("hasMainLessTeam", "此招聘总体上已不足2人名额,已不足开团报名,请单独报名吧!");
  1961. }
  1962. if ($dateRemain < 2) {
  1963. throw new GeneralException("hasDateLessTeam", "此招聘报名日期已不足2人名额,已不足开团报名,请单独报名吧!");
  1964. }
  1965. bizbase_todoWorkEnrollVerify($handleMode, $bizWorker, $recruitInfo, $planDotime);
  1966. $sqlParam = array();
  1967. $sqlParam[":nowtime"] = time();
  1968. $sqlParam[":biz_recruitid"] = intval($recruitId);
  1969. $sqlParam[":biz_workerid"] = intval($bizWorker["id"]);
  1970. $sqlParam[":share_workerid"] = intval($sharerWorkerId);
  1971. $sqlParam[":plan_dotime"] = intval($planDotime);
  1972. $sqlParam[":remark"] = "[" . date("Y-m-d H:i:s", time()) . "] 团长开团 \n";
  1973. $sqlTemp = "";
  1974. $sqlTemp .= " insert into biz_todoworkteam set createtime=:nowtime";
  1975. $sqlTemp .= " ,biz_recruitid=:biz_recruitid, leader_workerid=:biz_workerid ";
  1976. $sqlTemp .= " ,plan_dotime=:plan_dotime, `status`=1, remark=:remark;";
  1977. $sqlTemp .= " insert into biz_todowork set createtime=:nowtime,workteamid=LAST_INSERT_ID() ";
  1978. $sqlTemp .= " ,biz_recruitid=:biz_recruitid, biz_workerid=:biz_workerid, share_workerid=:share_workerid ";
  1979. $sqlTemp .= " ,workteam_mode=1, `teamstatus`=2, teamremark=:remark";
  1980. $sqlTemp .= " ,todo_begindate=:plan_dotime, remark=:remark;";
  1981. $backdata = pdo_query3($sqlTemp, $sqlParam);
  1982. return $backdata;
  1983. });
  1984. return $backdata;
  1985. break;
  1986. case "joinTeam":
  1987. throw new GeneralException("", "非常抱歉,本平台已不再支持团组报名,请直接单独报名吧!");
  1988. bizbase_verifyUserAccount($bizWorker, true, "无法参团组队");
  1989. $teamid = isset($ajaxdata["teamid"]) ? $ajaxdata["teamid"] : $GPC["teamid"];
  1990. if (intval($teamid) <= 0) {
  1991. throw new GeneralException("", "没有传递必要的teamid参数或参数值不正确");
  1992. }
  1993. $teamInfo = pdo_fetch("select * from biz_todoworkteam where id=" . intval($teamid));
  1994. if (empty($teamInfo)) {
  1995. throw new GeneralException("", "团组id没有对应的记录,请核查!");
  1996. }
  1997. if (intval($teamInfo["status"]) > 1) {
  1998. throw new GeneralException("", "此团组已不是可参团状态,请核查!");
  1999. }
  2000. $recruitId = intval($teamInfo["biz_recruitid"]);
  2001. $recruitInfo = pdo_fetch("select * from biz_trader_recruit where id=" . intval($recruitId));
  2002. if (empty($recruitInfo)) {
  2003. throw new GeneralException("", "没有定位到招聘记录信息,请核查!");
  2004. }
  2005. $planDotime = intval($teamInfo["plan_dotime"]);
  2006. if (strtotime(date("Y-m-d", $planDotime)) < strtotime(date("Y-m-d", time()))) {
  2007. throw new GeneralException("", "报名日期不能小于今日啊,请核查!");
  2008. }
  2009. $sharerWorkerId = intval($teamInfo["leader_workerid"]);
  2010. if ($sharerWorkerId == intval($bizWorker["id"])) {
  2011. throw new GeneralException("", "您不能在参团您开的团啊,请核查!");
  2012. }
  2013. $bizArgs = array("handleMode" => $handleMode, "bizWorker" => $bizWorker, "recruitInfo" => $recruitInfo, "teamInfo" => $teamInfo, "sharerWorkerId" => $sharerWorkerId);
  2014. $backdata = bizbase_recruitWorkLock($recruitId, $planDotime, $bizArgs, function ($recruitId, $planDotime, $bizArgs, $mainRemain, $dateRemain, $restRemain) {
  2015. $handleMode = $bizArgs["handleMode"];
  2016. $bizWorker = $bizArgs["bizWorker"];
  2017. $recruitInfo = $bizArgs["recruitInfo"];
  2018. $teamInfo = $bizArgs["teamInfo"];
  2019. $sharerWorkerId = $bizArgs["sharerWorkerId"];
  2020. if ($mainRemain <= 0) {
  2021. throw new GeneralException("hasMainOverflow", "此招聘已报满");
  2022. }
  2023. if ($dateRemain <= 0) {
  2024. throw new GeneralException("hasDateOverflow", "此招聘报名日期已报满!");
  2025. }
  2026. bizbase_todoWorkEnrollVerify($handleMode, $bizWorker, $recruitInfo, $planDotime, 0, intval($teamInfo["id"]));
  2027. $sqlParam = array();
  2028. $sqlParam[":nowtime"] = time();
  2029. $sqlParam[":workteamid"] = intval($teamInfo["id"]);
  2030. $sqlParam[":biz_recruitid"] = intval($recruitId);
  2031. $sqlParam[":biz_workerid"] = intval($bizWorker["id"]);
  2032. $sqlParam[":share_workerid"] = intval($sharerWorkerId);
  2033. $sqlParam[":plan_dotime"] = intval($planDotime);
  2034. $sqlParam[":remark"] = "[" . date("Y-m-d H:i:s", time()) . "] 参团 \n";
  2035. $sqlTemp = "";
  2036. $sqlTemp .= " insert into biz_todowork set createtime=:nowtime,workteamid=:workteamid ";
  2037. $sqlTemp .= " ,biz_recruitid=:biz_recruitid, biz_workerid=:biz_workerid, share_workerid=:share_workerid ";
  2038. $sqlTemp .= " ,workteam_mode=2, `teamstatus`=1, teamremark=:remark";
  2039. $sqlTemp .= " ,todo_begindate=:plan_dotime, remark=:remark;";
  2040. $backdata = pdo_query3($sqlTemp, $sqlParam);
  2041. return $backdata;
  2042. });
  2043. return $backdata;
  2044. break;
  2045. case "joinAudit":
  2046. $teamid = isset($ajaxdata["teamid"]) ? $ajaxdata["teamid"] : $GPC["teamid"];
  2047. if (intval($teamid) <= 0) {
  2048. throw new GeneralException("", "没有传递必要的teamid参数或参数值不正确");
  2049. }
  2050. $teamInfo = pdo_fetch("select * from biz_todoworkteam where id=" . intval($teamid));
  2051. if (empty($teamInfo)) {
  2052. throw new GeneralException("", "团组id没有对应的记录,请核查!");
  2053. }
  2054. if (intval($teamInfo["status"]) > 1) {
  2055. throw new GeneralException("", "此团组已不是成团进行中状态,请核查!");
  2056. }
  2057. $recruitId = intval($teamInfo["biz_recruitid"]);
  2058. $planDotime = intval($teamInfo["plan_dotime"]);
  2059. $leader_workerid = intval($teamInfo["leader_workerid"]);
  2060. if ($leader_workerid != intval($bizWorker["id"])) {
  2061. throw new GeneralException("", "这不是您开的团啊,请核查!");
  2062. }
  2063. $workerId = isset($ajaxdata["workerId"]) ? $ajaxdata["workerId"] : $GPC["workerId"];
  2064. if (intval($workerId) <= 0) {
  2065. throw new GeneralException("", "没有传递必要的workerId参数或参数值不正确");
  2066. }
  2067. if ($workerId == intval($bizWorker["id"])) {
  2068. throw new GeneralException("", "怎么能审核自己呢,请核查!");
  2069. }
  2070. $todowork = pdo_fetch("select * from biz_todowork where workteamid=:workteamid and biz_workerid=:biz_workerid", array(
  2071. ":workteamid" => $teamid,
  2072. ":biz_workerid" => $workerId,
  2073. ));
  2074. if (empty($todowork)) {
  2075. throw new GeneralException("", "没有定位到此组员的参团记录,请核查!");
  2076. }
  2077. if (intval($todowork["workteam_mode"]) != 2) {
  2078. throw new GeneralException("", "此组员不是参团模式,请核查!");
  2079. }
  2080. if (intval($todowork["teamstatus"]) != 1) {
  2081. throw new GeneralException("", "已不是参团待审核状态,请核查!");
  2082. }
  2083. if (intval($todowork["status"]) >= 1) {
  2084. throw new GeneralException("", "团组状态已确定不能再进行参团审核处理,请核查!");
  2085. }
  2086. $todo = isset($ajaxdata["todo"]) ? $ajaxdata["todo"] : $GPC["todo"];
  2087. $reason = isset($ajaxdata["reason"]) ? $ajaxdata["reason"] : $GPC["reason"];
  2088. $sqlParam = array();
  2089. $sqlParam[":nowtime"] = time();
  2090. $sqlParam[":id"] = intval($todowork["id"]);
  2091. switch (trim($todo)) {
  2092. case "allow":
  2093. $sqlParam[":remark"] = "[" . date("Y-m-d H:i:s", time()) . "] 同意参团 $reason \n";
  2094. $sqlParam[":teamstatus"] = 2; //参团状态:0-待参团;1-已提交参团;2-已入团;-1-参团被驳回;-2-参团被踢出;-3-已解散;
  2095. break;
  2096. case "refuse":
  2097. if (empty($reason)) {
  2098. throw new GeneralException("", "拒绝理由不能为空啊");
  2099. }
  2100. $sqlParam[":remark"] = "[" . date("Y-m-d H:i:s", time()) . "] 拒绝参团 $reason \n";
  2101. $sqlParam[":teamstatus"] = -1; //参团状态:0-待参团;1-已提交参团;2-已入团;-1-参团被驳回;-2-参团被踢出;-3-已解散;
  2102. break;
  2103. default:
  2104. throw new GeneralException("", "不支持的todo!");
  2105. }
  2106. $sqlTemp = "";
  2107. $sqlTemp .= " update biz_todowork set updatetime=:nowtime,`teamstatus`=:teamstatus";
  2108. $sqlTemp .= " ,teamremark=concat(:remark,ifnull(teamremark,'')), remark=concat(:remark,ifnull(remark,''))";
  2109. $sqlTemp .= " where id=:id;";
  2110. $backdata = pdo_query3($sqlTemp, $sqlParam);
  2111. return $backdata;
  2112. break;
  2113. case "removeMember":
  2114. $teamid = isset($ajaxdata["teamid"]) ? $ajaxdata["teamid"] : $GPC["teamid"];
  2115. if (intval($teamid) <= 0) {
  2116. throw new GeneralException("", "没有传递必要的teamid参数或参数值不正确");
  2117. }
  2118. $teamInfo = pdo_fetch("select * from biz_todoworkteam where id=" . intval($teamid));
  2119. if (empty($teamInfo)) {
  2120. throw new GeneralException("", "团组id没有对应的记录,请核查!");
  2121. }
  2122. if (intval($teamInfo["status"]) > 1) {
  2123. throw new GeneralException("", "此团组已不是成团进行中状态,请核查!");
  2124. }
  2125. $recruitId = intval($teamInfo["biz_recruitid"]);
  2126. $planDotime = intval($teamInfo["plan_dotime"]);
  2127. $leader_workerid = intval($teamInfo["leader_workerid"]);
  2128. if ($leader_workerid != intval($bizWorker["id"])) {
  2129. throw new GeneralException("", "这不是您开的团啊,请核查!");
  2130. }
  2131. $workerId = isset($ajaxdata["workerId"]) ? $ajaxdata["workerId"] : $GPC["workerId"];
  2132. if (intval($workerId) <= 0) {
  2133. throw new GeneralException("", "没有传递必要的workerId参数或参数值不正确");
  2134. }
  2135. if ($workerId == intval($bizWorker["id"])) {
  2136. throw new GeneralException("", "怎么能踢出自己呢,请核查!");
  2137. }
  2138. $todowork = pdo_fetch("select * from biz_todowork where workteamid=:workteamid and biz_workerid=:biz_workerid", array(
  2139. ":workteamid" => $teamid,
  2140. ":biz_workerid" => $workerId,
  2141. ));
  2142. if (empty($todowork)) {
  2143. throw new GeneralException("", "没有定位到此组员的参团记录,请核查!");
  2144. }
  2145. if (intval($todowork["workteam_mode"]) != 2) {
  2146. throw new GeneralException("", "此组员不是参团模式,请核查!");
  2147. }
  2148. if (intval($todowork["teamstatus"]) != 0 && intval($todowork["teamstatus"]) != 1) {
  2149. throw new GeneralException("", "团组状态已确定不能踢出了,请核查!");
  2150. }
  2151. if (intval($todowork["status"]) >= 1) {
  2152. throw new GeneralException("", "团组状态已确定不能踢出了,请核查!");
  2153. }
  2154. $sqlParam = array();
  2155. $sqlParam[":nowtime"] = time();
  2156. $sqlParam[":id"] = intval($todowork["id"]);
  2157. $sqlParam[":remark"] = "[" . date("Y-m-d H:i:s", time()) . "] 被踢出团组 \n";
  2158. $sqlTemp = "";
  2159. $sqlTemp .= " update biz_todowork set updatetime=:nowtime,`teamstatus`=-2";
  2160. $sqlTemp .= " ,teamremark=concat(:remark,ifnull(teamremark,'')), remark=concat(:remark,ifnull(remark,''))";
  2161. $sqlTemp .= " where id=:id;";
  2162. $backdata = pdo_query3($sqlTemp, $sqlParam);
  2163. return $backdata;
  2164. break;
  2165. case "dismiss":
  2166. $teamid = isset($ajaxdata["teamid"]) ? $ajaxdata["teamid"] : $GPC["teamid"];
  2167. if (intval($teamid) <= 0) {
  2168. throw new GeneralException("", "没有传递必要的teamid参数或参数值不正确");
  2169. }
  2170. $teamInfo = pdo_fetch("select * from biz_todoworkteam where id=" . intval($teamid));
  2171. if (empty($teamInfo)) {
  2172. throw new GeneralException("", "团组id没有对应的记录,请核查!");
  2173. }
  2174. if (intval($teamInfo["status"]) > 1) {
  2175. throw new GeneralException("", "此团组已不是成团进行中状态,请核查!");
  2176. }
  2177. $recruitId = intval($teamInfo["biz_recruitid"]);
  2178. $planDotime = intval($teamInfo["plan_dotime"]);
  2179. $leader_workerid = intval($teamInfo["leader_workerid"]);
  2180. if ($leader_workerid != intval($bizWorker["id"])) {
  2181. throw new GeneralException("", "这不是您开的团啊,请核查!");
  2182. }
  2183. $sqlParam = array();
  2184. $sqlParam[":nowtime"] = time();
  2185. $sqlParam[":workteamid"] = intval($teamid);
  2186. $sqlParam[":remark"] = "[" . date("Y-m-d H:i:s", time()) . "] 团组解散 \n";
  2187. $sqlTemp = "";
  2188. $sqlTemp .= " update biz_todoworkteam set updatetime=:nowtime,`status`=2, remark=concat(:remark,ifnull(remark,''))";
  2189. $sqlTemp .= " where id=:workteamid;";
  2190. $sqlTemp .= " update biz_todowork set updatetime=:nowtime,`teamstatus`=-3";
  2191. $sqlTemp .= " ,teamremark=concat(:remark,ifnull(teamremark,'')), remark=concat(:remark,ifnull(remark,''))";
  2192. $sqlTemp .= " where workteamid=:workteamid;";
  2193. $backdata = pdo_query3($sqlTemp, $sqlParam);
  2194. return $backdata;
  2195. break;
  2196. case "fetchTeamByPlater":
  2197. case "fetchTeamByTrader":
  2198. case "fetchTeamByWorker":
  2199. $teamid = isset($ajaxdata["teamid"]) ? $ajaxdata["teamid"] : $GPC["teamid"];
  2200. if (intval($teamid) <= 0) {
  2201. throw new GeneralException("", "没有传递必要的teamid参数或参数值不正确");
  2202. }
  2203. $teamInfo = pdo_fetch("select tdwkt.*,btr.biz_traderid as tdwk_biz_traderid
  2204. ,btr.title as recruit_title
  2205. ,bt.company_name as bt_company_name
  2206. ,lwk.true_name as lwk_name,lbu.mobile as lbu_mobile,lwk.profile_photo as lwkprofile_photo
  2207. from biz_todoworkteam tdwkt
  2208. left join biz_trader_recruit btr on btr.id=tdwkt.biz_recruitid
  2209. left join biz_trader bt on bt.id=btr.biz_traderid
  2210. left join biz_worker lwk on lwk.id=tdwkt.leader_workerid
  2211. left join base_user lbu on lbu.id=lwk.base_userid
  2212. where tdwkt.id=" . intval($teamid));
  2213. if (empty($teamInfo)) {
  2214. throw new GeneralException("", "团组id没有对应的记录,请核查!");
  2215. }
  2216. if (!empty($bizTrader)) {
  2217. if (intval($teamInfo["tdwk_biz_traderid"]) != intval($bizTrader["id"])) {
  2218. throw new GeneralException("", "此团组不是报的您家的名,请核查!");
  2219. }
  2220. }
  2221. $teamInfo["iamleader"] = ($teamInfo["leader_workerid"] == intval($bizWorker["id"]));
  2222. $teamInfo["createtime"] = date("Y-m-d H:i:s", $teamInfo["createtime"]);
  2223. $teamInfo["remark"] = trim(explode("\n", $teamInfo["remark"])[0]);
  2224. $teamInfo["statusName"] = bizbase_todoWorkTeamStatusName(intval($teamInfo["status"]));
  2225. return $teamInfo;
  2226. break;
  2227. case "fetchByPlater":
  2228. case "fetchByTrader":
  2229. case "fetchByTrader2":
  2230. case "fetchByWorker":
  2231. case "fetchTeamFollowByPlater":
  2232. case "fetchTeamFollowByTrader":
  2233. case "fetchTeamFollowByWorker":
  2234. $workid = isset($ajaxdata["workid"]) ? $ajaxdata["workid"] : $GPC["workid"];
  2235. if (intval($workid) <= 0) {
  2236. throw new GeneralException("", "没有传递必要的workid参数或参数值不正确");
  2237. }
  2238. $workInfo = pdo_fetch("select tdwk.*,btr.biz_traderid as tdwk_biz_traderid
  2239. ,btr.title as recruit_title,btr.salary as btr_salary,btr.feetotal as btr_feetotal,btr.plat_fetchmoney as btr_plat_fetchmoney,btr.sharer_fetchmoney as btr_sharer_fetchmoney
  2240. ,btr.begin_datetime as btr_begindatetime,btr.finish_datetime as btr_finishdatetime
  2241. ,btr.linker_phone as btr_linker_phone,btr.begin_hour as btr_begin_hour,btr.finish_hour as btr_finish_hour
  2242. ,bt.company_name as bt_company_name,bt.linker_gender as bt_linker_gender,btbu.mobile as btbu_mobile
  2243. ,(case when ifnull(bt2.true_name,'')<>'' then bt2.true_name else bt2.nickname end) as bt2_true_name
  2244. ,wk.id as wkid,(case when wk.true_name<>'' then wk.true_name else wk.nickname end) as wk_name,bu.mobile as bu_mobile,wk.profile_photo as wkprofile_photo,wk.idcard as wk_idcard
  2245. ,(case when lwk.true_name<>'' then lwk.true_name else lwk.nickname end) as lwk_name,lbu.mobile as lbu_mobile,lwk.profile_photo as lwkprofile_photo
  2246. ,swk.id as swkid,(case when swk.true_name<>'' then swk.true_name else swk.nickname end) as swk_name,sbu.mobile as sbu_mobile
  2247. ,wkapa.id as wkapa_id,wkapa.deleted as wkapa_deleted,wkapa.result_level as wk_appraiseLevel,wkapa.result_desc as wk_appraiseRemark
  2248. ,tdapa.id as tdapa_id,tdapa.deleted as tdapa_deleted,tdapa.result_level as td_appraiseLevel,tdapa.result_desc as td_appraiseRemark
  2249. ,(select concat(brd.id,'-',brd.begin_datetime,'-',brd.finish_datetime,'-',bt.id,'-',bu.id,'-',bu.mobile,'-',bt.true_name)
  2250. from biz_recruit_delegate brd
  2251. left join biz_trader2 bt on bt.id=brd.biz_trader2id
  2252. left join base_user bu on bu.id=bt.base_userid
  2253. where brd.biz_recruitid=tdwk.biz_recruitid and brd.finish_datetime>:verify_datetime
  2254. limit 1) as delegate_info
  2255. ,tdwkat2.`biz_catalog` as tdwk_settlecatalog
  2256. from biz_todowork tdwk
  2257. left join biz_todoworkteam tdwkt on tdwkt.id=tdwk.workteamid
  2258. left join biz_trader_recruit btr on btr.id=tdwk.biz_recruitid
  2259. left join biz_trader bt on bt.id=btr.biz_traderid
  2260. left join base_user btbu on btbu.id=bt.base_userid
  2261. left join biz_trader2 bt2 on bt2.id=tdwk.settled_userid
  2262. left join biz_worker lwk on lwk.id=tdwkt.leader_workerid
  2263. left join base_user lbu on lbu.id=lwk.base_userid
  2264. left join biz_worker wk on wk.id=tdwk.biz_workerid
  2265. left join base_user bu on bu.id=wk.base_userid
  2266. left join biz_worker swk on swk.id=tdwk.share_workerid
  2267. left join base_user sbu on sbu.id=swk.base_userid
  2268. left join biz_appraisal wkapa on wkapa.biz_catalog=1 and wkapa.biz_id=tdwk.id
  2269. left join biz_appraisal tdapa on tdapa.biz_catalog=2 and tdapa.biz_id=tdwk.id
  2270. left join biz_trader_account tdwkat1 on tdwk.`status`=5 and tdwkat1.`status`=1 and tdwkat1.`type`=0 and tdwkat1.biz_id=tdwk.id and (tdwkat1.`biz_catalog`=1 or tdwkat1.`biz_catalog`=4)
  2271. left join biz_trader_account tdwkat2 on tdwk.`status`=5 and tdwkat2.`status`=1 and tdwkat2.`type`=1 and tdwkat2.biz_id=tdwkat1.id and (tdwkat2.`biz_catalog`=6 or tdwkat2.`biz_catalog`=7)
  2272. where tdwk.id=:tdwkId", array(
  2273. ":tdwkId" => intval($workid),
  2274. ":verify_datetime" => time(),
  2275. ));
  2276. if (empty($workInfo)) {
  2277. throw new GeneralException("", "团组成员项id没有对应的记录,请核查!");
  2278. }
  2279. if (!empty($bizTrader)) {
  2280. if (intval($workInfo["tdwk_biz_traderid"]) != intval($bizTrader["id"])) {
  2281. throw new GeneralException("", "此订单不是报的您家的名,请核查!");
  2282. }
  2283. }
  2284. if (!empty($bizTrader2)) {
  2285. bizTrader2_verifyRecuritDelegate($bizTrader2, $workInfo["biz_recruitid"]);
  2286. }
  2287. $delegateInfo = bizbase_recruitDelegateInfo($workInfo);
  2288. foreach ($delegateInfo as $key => $val) {
  2289. $workInfo["delegate_" . $key] = $val;
  2290. }
  2291. unset($workInfo["delegate_info"]);
  2292. //----------------------
  2293. $workInfo["tdwk_settlecatalogName"] = "";
  2294. switch (intval($workInfo["tdwk_settlecatalog"])) {
  2295. case 6:
  2296. $workInfo["tdwk_settlecatalogName"] = "商家订单整体结算";
  2297. break;
  2298. case 7:
  2299. $workInfo["tdwk_settlecatalogName"] = "平台代商家结算订单";
  2300. break;
  2301. }
  2302. $workInfo["worksn"] = base_buildSNById("WK", $workInfo["id"], 12, 12);
  2303. $workInfo["btr_salary"] = round(floatval($workInfo["btr_salary"]), 2);
  2304. $workInfo["btr_feetotal"] = round(floatval($workInfo["btr_feetotal"]), 2);
  2305. $workInfo["wkapa_id"] = intval($workInfo["wkapa_id"]); //小于等于0则会员未评价商家,否则已评价
  2306. $workInfo["wk_appraiseLevel"] = intval($workInfo["wkapa_deleted"]) > 0 ? -1 : intval($workInfo["wk_appraiseLevel"]);
  2307. $workInfo["tdapa_id"] = intval($workInfo["tdapa_id"]); //小于等于0则商家未评价会员,否则已评价
  2308. $workInfo["td_appraiseLevel"] = intval($workInfo["tdapa_deleted"]) > 0 ? -1 : intval($workInfo["td_appraiseLevel"]);
  2309. $workInfo["itisme"] = ($workInfo["wkid"] == intval($bizWorker["id"]));
  2310. $workInfo["iamleader"] = ($workInfo["lwkid"] == intval($bizWorker["id"]));
  2311. $workInfo["statusName"] = bizbase_todoWorkStatusName($workInfo["status"]);
  2312. $workInfo["teamrole"] = bizbase_todoWorkTeamRoleName($workInfo["workteam_mode"]);
  2313. $workInfo["memberRealed"] = empty(trim($workInfo["wk_idcard"])) ? false : true;
  2314. $workInfo["createtime"] = date("Y-m-d H:i:s", $workInfo["createtime"]);
  2315. $workInfo["btr_begindatetime"] = date("Y-m-d", $workInfo["btr_begindatetime"]);
  2316. $workInfo["btr_finishdatetime"] = (intval($workInfo["btr_finishdatetime"]) <= 0 ? "" : date("Y-m-d", $workInfo["btr_finishdatetime"]));
  2317. $workInfo["worked_begintime"] = intval($workInfo["worked_begintime"]) <= 0 ? "" : date("Y-m-d H:i:s", $workInfo["worked_begintime"]);
  2318. $workInfo["worked_finishtime"] = intval($workInfo["worked_finishtime"]) <= 0 ? "" : date("Y-m-d H:i:s", $workInfo["worked_finishtime"]);
  2319. $workInfo["settled_time"] = intval($workInfo["settled_time"]) <= 0 ? "" : date("Y-m-d H:i:s", $workInfo["settled_time"]);
  2320. $workInfo["settled_modeName"] = intval($workInfo["settled_mode"]) <= 0 ? "商家自核销" : "现场经理核销";
  2321. $workInfo["settled_userName"] = intval($workInfo["settled_mode"]) <= 0 ? $workInfo["bt2_true_name"] : $workInfo["bt_company_name"];
  2322. $workInfo["remarks"] = explode("\n", $workInfo["remark"]);
  2323. $workInfo["remark"] = trim(explode("\n", $workInfo["remark"])[0]);
  2324. $workInfo["teamremark"] = trim(explode("\n", $workInfo["teamremark"])[0]);
  2325. $workInfo["teamstatusName"] = bizbase_todoWorkSubTeamStatusName(intval($workInfo["teamstatus"]));
  2326. return $workInfo;
  2327. break;
  2328. case "singleEnroll":
  2329. bizbase_verifyUserAccount($bizWorker, true, "无法报名");
  2330. $recruitId = isset($ajaxdata["recruitId"]) ? $ajaxdata["recruitId"] : $GPC["recruitId"];
  2331. if (intval($recruitId) <= 0) {
  2332. throw new GeneralException("", "没有传递必要的recruitId参数或参数值不正确");
  2333. }
  2334. $recruitInfo = pdo_fetch("select * from biz_trader_recruit where id=" . intval($recruitId));
  2335. if (empty($recruitInfo)) {
  2336. throw new GeneralException("", "没有定位到招聘记录信息,请核查!");
  2337. }
  2338. $planDotime = isset($ajaxdata["planDotime"]) ? $ajaxdata["planDotime"] : $GPC["planDotime"];
  2339. $planDotime = strtotime($planDotime);
  2340. if (intval($recruitInfo["settle_catalog"]) <= 0) {
  2341. $planDotime = intval($recruitInfo["begin_datetime"]);
  2342. } else if (intval($planDotime) <= 0) {
  2343. throw new GeneralException("", "批量招聘模式下必须传递报名干活的日期planDotime,请核查!");
  2344. }
  2345. if (strtotime(date("Y-m-d", $planDotime)) < strtotime(date("Y-m-d", time()))) {
  2346. throw new GeneralException("", "报名日期不能小于今日啊,请核查!");
  2347. }
  2348. //$sharerWorkerId = isset($ajaxdata["sharerWorkerId"]) ? $ajaxdata["sharerWorkerId"] : $GPC["sharerWorkerId"];
  2349. $sharerWorkerId = pdo_fetchcolumn("select fromerid from biz_sharelink
  2350. where deleted=0 and biz_catalog=0 and biz_id=:biz_id and toerid=:toerid order by id desc limit 1;", array(
  2351. ":biz_id" => $recruitInfo["id"],
  2352. ":toerid" => $bizWorker["id"],
  2353. ));
  2354. $sharerWorkerId = intval($sharerWorkerId);
  2355. if ($sharerWorkerId == intval($bizWorker["id"])) {
  2356. $sharerWorkerId = 0;
  2357. }
  2358. if ($sharerWorkerId > 0) {
  2359. $sharerWorker = pdo_fetch("select * from biz_worker where id=" . intval($sharerWorkerId));
  2360. if (empty($sharerWorker)) {
  2361. throw new GeneralException("", "分享者id没有对应的记录,请核查!");
  2362. }
  2363. }
  2364. $accountInfo = bizbase_workerAccountInfo($bizWorker);
  2365. $balance = round(floatval($accountInfo["balance"]), 2);
  2366. $minaCode = isset($ajaxdata["minaCode"]) ? $ajaxdata["minaCode"] : $GPC["minaCode"];
  2367. $recuritRule = bizbase_fetchBaseConfig("RecuritRule", true);
  2368. $bizArgs = array("handleMode" => $handleMode, "bizWorker" => $bizWorker, "recruitInfo" => $recruitInfo, "sharerWorkerId" => $sharerWorkerId, "balance" => $balance, "minaCode" => $minaCode, "recuritRule" => $recuritRule);
  2369. $backdata = bizbase_recruitWorkLock($recruitId, $planDotime, $bizArgs, function ($recruitId, $planDotime, $bizArgs, $mainRemain, $dateRemain, $restRemain, $pickDateList, $mainRemain2, $dateRemain2) {
  2370. $handleMode = $bizArgs["handleMode"];
  2371. $bizWorker = $bizArgs["bizWorker"];
  2372. $recruitInfo = $bizArgs["recruitInfo"];
  2373. $sharerWorkerId = $bizArgs["sharerWorkerId"];
  2374. $money_balance = $bizArgs["balance"];
  2375. $minaCode = $bizArgs["minaCode"];
  2376. $recuritRule = $bizArgs["recuritRule"];
  2377. if ($mainRemain2 <= 0) {
  2378. throw new GeneralException("hasMainOverflow", "此招聘已录满,已不能再报名");
  2379. }
  2380. if ($mainRemain <= 0) {
  2381. throw new GeneralException("hasMainOverflow", "此招聘已报满,暂时不能报名");
  2382. }
  2383. if ($dateRemain2 <= 0) {
  2384. throw new GeneralException("hasDateOverflow", "此招聘报名日期已录满,已不能再报名");
  2385. }
  2386. if ($dateRemain <= 0) {
  2387. throw new GeneralException("hasDateOverflow", "此招聘报名日期已报满,暂时不能报名");
  2388. }
  2389. bizbase_todoWorkEnrollVerify($handleMode, $bizWorker, $recruitInfo, $planDotime);
  2390. if (intval($recruitInfo["enroll_audit"]) <= 0) { //不需要审核报名
  2391. throw new GeneralException("", "非常抱歉,本平台已不再支持报名后直接录取模式!");
  2392. $sqlTemp = "";
  2393. $sqlParam = array();
  2394. $sqlParam[":nowtime"] = time();
  2395. $sqlParam[":biz_recruitid"] = intval($recruitId);
  2396. $sqlParam[":biz_workerid"] = intval($bizWorker["id"]);
  2397. $sqlParam[":share_workerid"] = intval($sharerWorkerId);
  2398. $sqlParam[":plan_dotime"] = strtotime(date("Y-m-d", $planDotime));
  2399. $sqlParam[":remark"] = "[" . date("Y-m-d H:i:s", time()) . "] 单独报名并直通 \n";
  2400. $sqlParam[":status"] = 2; //0-待提交;1-已报名待审核;2-已审核;-1-报名被驳回;3-工资/佣金已全部结算;-2-取消报名;-3-被违约 -4-被动取消
  2401. $sqlParam[":cancel_remark"] = "[" . date("Y-m-d H:i:s", time()) . "] 已被其他商家及时录取,本待录用申请被取消 \n";
  2402. $sqlParam[":cancel_status"] = -4; //0-待提交;1-已报名待审核;2-已审核;-1-报名被驳回;3-工资/佣金已全部结算;-2-取消报名;-3-被违约 -4-被动取消
  2403. $sqlParam[":cancel_teamstatus"] = -4; //0-待参团;1-已提交参团;2-已入团;-1-参团被驳回;-2-参团被踢出;-3-已解散;-4-被动取消;
  2404. $sqlParam[":workDateStart"] = intval($recruitInfo["begin_datetime"]);
  2405. $sqlParam[":workDateFinish"] = $sqlParam[":workDateStart"];
  2406. if (
  2407. intval($recruitInfo["settle_catalog"]) <= 0 //普通招聘的多日招聘
  2408. && intval($recruitInfo["begin_datetime"]) < intval($recruitInfo["finish_datetime"])
  2409. ) {
  2410. $sqlParam[":workDateFinish"] = intval($recruitInfo["finish_datetime"]);
  2411. }
  2412. if (intval($recruitInfo["settle_catalog"]) > 0) {
  2413. $sqlParam[":workDateStart"] = strtotime(date("Y-m-d", $planDotime));
  2414. $sqlParam[":workDateFinish"] = strtotime(date("Y-m-d 23:59:59", $planDotime));
  2415. }
  2416. $sqlParam[":nowSettleCatalog"] = intval($recruitInfo["settle_catalog"]);
  2417. $sqlParam[":plandoDateStart"] = strtotime(date("Y-m-d", $planDotime));
  2418. $sqlParam[":plandoDateFinish"] = strtotime(date("Y-m-d 23:59:59", $planDotime));
  2419. $sqlTemp .= " update biz_todowork tdwk";
  2420. $sqlTemp .= " left join biz_trader_recruit btr on btr.id=tdwk.biz_recruitid ";
  2421. $sqlTemp .= " left join biz_todoworkteam tdwkt on tdwkt.id=tdwk.workteamid ";
  2422. $sqlTemp .= " set tdwk.updatetime=:nowtime, tdwk.`status`=:cancel_status, tdwk.`teamstatus`=:cancel_teamstatus ";
  2423. $sqlTemp .= " , tdwk.remark=concat(:cancel_remark,ifnull(tdwk.remark,'')), tdwk.teamremark=concat(:cancel_remark,ifnull(tdwk.teamremark,'')) ";
  2424. $sqlTemp .= " where tdwk.biz_workerid=:biz_workerid and ( (tdwk.`workteam_mode`<=0 and tdwk.`status`=1) or (tdwk.`workteam_mode`>0 and tdwk.`teamstatus`>=2 and tdwkt.`status`=3) )
  2425. and(
  2426. (tdwk.todo_begindate>=:plandoDateStart and tdwk.todo_begindate<=:plandoDateFinish)
  2427. or(:nowSettleCatalog=0 and tdwk.todo_begindate>=:workDateStart and tdwk.todo_begindate<=:workDateFinish)
  2428. or( btr.settle_catalog<=0 and btr.finish_datetime>btr.begin_datetime and (
  2429. (btr.begin_datetime>=:workDateStart and btr.begin_datetime<=:workDateFinish)
  2430. or(btr.begin_datetime<=:workDateStart and btr.finish_datetime>=:workDateFinish)
  2431. or(btr.finish_datetime>=:workDateStart and btr.finish_datetime<=:workDateFinish)
  2432. ))
  2433. )
  2434. ;";
  2435. $sqlTemp .= " insert into biz_todowork set createtime=:nowtime ";
  2436. $sqlTemp .= " ,biz_recruitid=:biz_recruitid, biz_workerid=:biz_workerid, share_workerid=:share_workerid ";
  2437. $sqlTemp .= " ,todo_begindate=:plan_dotime,`status`=:status,remark=:remark;";
  2438. $sqlTemp .= empty($sqlTemp111) ? "" : $sqlTemp111;
  2439. $backdata = pdo_query3($sqlTemp, $sqlParam);
  2440. return $backdata;
  2441. } else {
  2442. $enroll_premoney = round(floatval($recuritRule["enroll_premoney"]), 2);
  2443. if ($enroll_premoney <= 0) {
  2444. $enroll_premoney = 0;
  2445. }
  2446. $nowPayMoney = round(($enroll_premoney - $money_balance), 2);
  2447. if ($nowPayMoney <= 0) {
  2448. $nowPayMoney = 0;
  2449. }
  2450. //过滤掉0收支明细
  2451. $sqlParam = array();
  2452. $sqlParam[":nowtime"] = time();
  2453. $sqlParam[":biz_recruitid"] = intval($recruitId);
  2454. $sqlParam[":biz_workerid"] = intval($bizWorker["id"]);
  2455. $sqlParam[":share_workerid"] = intval($sharerWorkerId);
  2456. $sqlParam[":enroll_premoney"] = $enroll_premoney;
  2457. $sqlParam[":plan_dotime"] = strtotime(date("Y-m-d", $planDotime));
  2458. $sqlParam[":remark"] = "[" . date("Y-m-d H:i:s", time()) . "] 单独报名待支付押金 \n";
  2459. $sqlParam[":status"] = 0; //0-待支付押金;1-已报名待审核;2-已审核;-1-报名被驳回;3-工资/佣金已全部结算;-2-取消报名;-3-被违约 -4-被动取消
  2460. $sqlTemp = "";
  2461. $sqlTemp .= " insert into biz_todowork set createtime=:nowtime, enroll_premoney=:enroll_premoney ";
  2462. $sqlTemp .= " ,biz_recruitid=:biz_recruitid, biz_workerid=:biz_workerid, share_workerid=:share_workerid ";
  2463. $sqlTemp .= " ,todo_begindate=:plan_dotime,paytag=0,`status`=:status,remark=:remark;";
  2464. $sqlTemp .= " set @handle_id=LAST_INSERT_ID();";
  2465. $sqlParam[":type"] = 0; //此处必须为收入类型,支付收入成功后,再进行扣除业务
  2466. $sqlParam[":money"] = $nowPayMoney;
  2467. $sqlParam[":biz_catalog"] = 4; //报名押金支付
  2468. $sqlTemp .= " insert into biz_worker_account set createtime=:nowtime";
  2469. $sqlTemp .= " ,biz_workerid=:biz_workerid, biz_roletype=0, biz_userid=:biz_workerid ";
  2470. $sqlTemp .= " ,type=:type, `money`=:money";
  2471. $sqlTemp .= " ,biz_catalog=:biz_catalog, biz_id=@handle_id";
  2472. $sqlTemp .= " ,biz_idtag=concat('TKID',@handle_id,'EE0')";
  2473. $sqlTemp .= " ,`status`=0, remark=:remark;";
  2474. $sqlTemp .= " select * from biz_worker_account where id=LAST_INSERT_ID();";
  2475. $dataset = pdo_query3($sqlTemp, $sqlParam);
  2476. $bizInfo = $dataset[count($dataset) - 1][0];
  2477. if (empty($bizInfo)) {
  2478. throw new GeneralException("", "构建预支付订单异常");
  2479. }
  2480. $payBizCatalog = "5"; //5-会员报名支付押金
  2481. $payBizId = $bizInfo["id"];
  2482. if ($nowPayMoney <= 0) {
  2483. bizbase_paySuccess($payBizCatalog, $payBizId, false, $handleMode);
  2484. return array("payResult" => true);
  2485. } else {
  2486. //---------------------------------------
  2487. if (empty(trim($minaCode))) {
  2488. throw new GeneralException("", "没有传递必要的minaCode参数");
  2489. }
  2490. $payScene = "JSAPI";
  2491. $prePayArgs = array(
  2492. "payBackBizCatalog" => $payBizCatalog,
  2493. "payBackBizId" => $payBizId,
  2494. "payScene" => $payScene,
  2495. );
  2496. require_once WEB_PHY_ROOT . "/base/wxsrv.php";
  2497. $resObj = bizwx_fetchMinaOpenidCore(SUBSYS_LABOUR_MINA);
  2498. $wxmina_appid = $resObj["wxmina_appid"];
  2499. $wxmina_openid = $resObj["openid"];
  2500. $bizArgs = array(
  2501. "minaCode" => $minaCode,
  2502. "bizInfo" => $bizInfo,
  2503. "wxmina_appid" => $wxmina_appid,
  2504. "wxmina_openid" => $wxmina_openid,
  2505. );
  2506. try {
  2507. $prePayInfo = bizbase_mactivityPayCore($prePayArgs, $bizArgs);
  2508. } catch (Throwable $ex) {
  2509. $errMsg = $ex->getMessage();
  2510. if (mb_strpos($errMsg, "201 商户订单号重复") === false) {
  2511. throw $ex;
  2512. } else {
  2513. require_once WEB_PHY_ROOT . "/base/wxsrv.php";
  2514. $result = weixin_ordercloseV3($bizInfo["biz_idtag"]);
  2515. $dataset = pdo_query3("
  2516. update biz_todowork set updatetime=:nowtime
  2517. ,paytag=ifnull(paytag,0)+1
  2518. ,remark=concat('更新支付订单号后缀\n',ifnull(remark,''))
  2519. where id=:bizid;
  2520. select @paytag:=paytag from biz_todowork where id=:bizid;
  2521. update biz_worker_account set updatetime=:nowtime
  2522. ,biz_idtag=concat('TKID',:bizid,'EE',@paytag)
  2523. ,remark=concat('更新支付订单号后缀\n',ifnull(remark,''))
  2524. where id=:accid;
  2525. select * from biz_worker_account where id=:accid;", array(
  2526. ":nowtime" => time(),
  2527. ":bizid" => intval($bizInfo["biz_id"]),
  2528. ":accid" => intval($bizInfo["id"]),
  2529. ));
  2530. $bizInfo = $dataset[count($dataset) - 1][0];
  2531. $bizArgs["bizInfo"] = $bizInfo;
  2532. $prePayInfo = bizbase_mactivityPayCore($prePayArgs, $bizArgs);
  2533. }
  2534. }
  2535. $prePayInfo = array_merge($prePayArgs, $prePayInfo);
  2536. return array(
  2537. "moneyBalance" => $money_balance,
  2538. "payMoney" => $nowPayMoney,
  2539. "prePayInfo" => $prePayInfo,
  2540. );
  2541. }
  2542. }
  2543. });
  2544. return $backdata;
  2545. break;
  2546. case "teamEnroll":
  2547. throw new GeneralException("", "非常抱歉,本平台已不再支持团组报名,请解散当前团组后单独报名吧!");
  2548. bizbase_verifyUserAccount($bizWorker, true, "无法报名");
  2549. $teamid = isset($ajaxdata["teamid"]) ? $ajaxdata["teamid"] : $GPC["teamid"];
  2550. if (intval($teamid) <= 0) {
  2551. throw new GeneralException("", "没有传递必要的teamid参数或参数值不正确");
  2552. }
  2553. $teamInfo = pdo_fetch("select * from biz_todoworkteam where id=" . intval($teamid));
  2554. if (empty($teamInfo)) {
  2555. throw new GeneralException("", "团组id没有对应的记录,请核查!");
  2556. }
  2557. if (intval($teamInfo["status"]) > 1) {
  2558. throw new GeneralException("", "此团组已不是成团进行中状态,请核查!");
  2559. }
  2560. $recruitId = intval($teamInfo["biz_recruitid"]);
  2561. $recruitInfo = pdo_fetch("select * from biz_trader_recruit where id=" . intval($recruitId));
  2562. if (empty($recruitInfo)) {
  2563. throw new GeneralException("", "没有定位到招聘记录信息,请核查!");
  2564. }
  2565. $planDotime = intval($teamInfo["plan_dotime"]);
  2566. $leader_workerid = intval($teamInfo["leader_workerid"]);
  2567. if ($leader_workerid != intval($bizWorker["id"])) {
  2568. throw new GeneralException("", "这不是您开的团啊,请核查!");
  2569. }
  2570. $bizArgs = array("handleMode" => $handleMode, "bizWorker" => $bizWorker, "teamInfo" => $teamInfo, "recruitInfo" => $recruitInfo);
  2571. $backdata = bizbase_recruitWorkLock($recruitId, $planDotime, $bizArgs, function ($recruitId, $planDotime, $bizArgs, $mainRemain, $dateRemain, $restRemain) {
  2572. $handleMode = $bizArgs["handleMode"];
  2573. $bizWorker = $bizArgs["bizWorker"];
  2574. $teamInfo = $bizArgs["teamInfo"];
  2575. $recruitInfo = $bizArgs["recruitInfo"];
  2576. if ($mainRemain <= 0) {
  2577. throw new GeneralException("hasMainOverflow", "此招聘已报满");
  2578. }
  2579. if ($dateRemain <= 0) {
  2580. throw new GeneralException("hasDateOverflow", "此招聘报名日期已报满!");
  2581. }
  2582. //------------------------------------------
  2583. $sqlTemp = "";
  2584. $sqlParam = array();
  2585. $sqlParam[":nowtime"] = time();
  2586. $sqlParam[":teamid"] = $teamInfo["id"];
  2587. if (intval($recruitInfo["enroll_audit"]) <= 0) { //不需要审核报名
  2588. $sqlParam[":teamremark"] = "[" . date("Y-m-d H:i:s", time()) . "] 组团报名并直通 \n";
  2589. $sqlParam[":teamstatus"] = 4; //0-待成团;1-已成团待提交报名;2-已解散;3-已报名待审核;4-报名已审核通过;5-报名被驳回;6-被违约;
  2590. $sqlParam[":workremark"] = "[" . date("Y-m-d H:i:s", time()) . "] 组团报名并直通 \n";
  2591. $sqlParam[":workstatus"] = 2; // 0-待提交;1-已报名待审核;2-已审核;-1-报名被驳回;3-工资/佣金已全部结算;-2-取消报名;-3-被违约 -4-被动取消
  2592. $sqlParam[":cancel_remark"] = "[" . date("Y-m-d H:i:s", time()) . "] 已被其他商家及时录取,本待录用申请被取消 \n";
  2593. $sqlParam[":cancel_status"] = -4; //0-待提交;1-已报名待审核;2-已审核;-1-报名被驳回;3-工资/佣金已全部结算;-2-取消报名;-3-被违约 -4-被动取消
  2594. $sqlParam[":cancel_teamstatus"] = -4; //0-待参团;1-已提交参团;2-已入团;-1-参团被驳回;-2-参团被踢出;-3-已解散;-4-被动取消;
  2595. $sqlParam[":workDateStart"] = intval($recruitInfo["begin_datetime"]);
  2596. $sqlParam[":workDateFinish"] = $sqlParam[":workDateStart"];
  2597. if (
  2598. intval($recruitInfo["settle_catalog"]) <= 0 //普通招聘的多日招聘
  2599. && intval($recruitInfo["begin_datetime"]) < intval($recruitInfo["finish_datetime"])
  2600. ) {
  2601. $sqlParam[":workDateFinish"] = intval($recruitInfo["finish_datetime"]);
  2602. }
  2603. if (intval($recruitInfo["settle_catalog"]) > 0) {
  2604. $sqlParam[":workDateStart"] = strtotime(date("Y-m-d", $planDotime));
  2605. $sqlParam[":workDateFinish"] = strtotime(date("Y-m-d 23:59:59", $planDotime));
  2606. }
  2607. $sqlParam[":nowSettleCatalog"] = intval($recruitInfo["settle_catalog"]);
  2608. $sqlParam[":plandoDateStart"] = strtotime(date("Y-m-d", $planDotime));
  2609. $sqlParam[":plandoDateFinish"] = strtotime(date("Y-m-d 23:59:59", $planDotime));
  2610. } else {
  2611. $sqlParam[":teamremark"] = "[" . date("Y-m-d H:i:s", time()) . "] 组团报名待审核 \n";
  2612. $sqlParam[":teamstatus"] = 3; //0-待成团;1-已成团待提交报名;2-已解散;3-已报名待审核;4-报名已审核通过;5-报名被驳回;6-被违约;
  2613. $sqlParam[":workremark"] = "[" . date("Y-m-d H:i:s", time()) . "] 组团报名待审核 \n";
  2614. $sqlParam[":workstatus"] = 1; // 0-待提交;1-已报名待审核;2-已审核;-1-报名被驳回;3-工资/佣金已全部结算;-2-取消报名;-3-被违约 -4-被动取消
  2615. //-----
  2616. $sqlTemp .= " insert into biz_message_queue( createtime, biz_catalog, biz_id)";
  2617. $sqlTemp .= " select :nowtime, 1, id";
  2618. $sqlTemp .= " from biz_todowork ";
  2619. $sqlTemp .= " where workteamid=" . intval($teamInfo["id"]) . " and workteam_mode=1;";
  2620. }
  2621. $sqlTemp .= " update biz_todoworkteam set updatetime=:nowtime,`status`=:teamstatus,remark=concat(:teamremark,ifnull(remark,'')) ";
  2622. $sqlTemp .= " where id=:teamid;";
  2623. $teamWorkers = pdo_fetchall("select tdwk.id as tdwk_id,wk.*
  2624. from biz_todowork tdwk
  2625. inner join biz_worker wk on wk.id=tdwk.biz_workerid
  2626. where tdwk.workteamid=:teamid and tdwk.teamstatus=1 ", array(
  2627. ":teamid" => $teamInfo["id"],
  2628. ));
  2629. if (!empty($teamWorkers)) {
  2630. throw new GeneralException("hasWaitJoiner", "团组中还有未通过的待参团团项!");
  2631. }
  2632. $teamWorkers = pdo_fetchall("select tdwk.id as tdwk_id,wk.*
  2633. from biz_todowork tdwk
  2634. inner join biz_worker wk on wk.id=tdwk.biz_workerid
  2635. where tdwk.workteamid=:teamid and tdwk.teamstatus=2 and ifnull(tdwk.`status`,0)=0 ", array(
  2636. ":teamid" => $teamInfo["id"],
  2637. ));
  2638. if (empty($teamWorkers)) {
  2639. throw new GeneralException("", "团组竟然为空啊!");
  2640. }
  2641. $newTeamWorkers = array();
  2642. foreach ($teamWorkers as $workerItem) {
  2643. if (bizbase_todoWorkEnrollVerify($handleMode, $workerItem, $recruitInfo, $planDotime, $workerItem["tdwk_id"], intval($teamInfo["id"]))) {
  2644. array_push($newTeamWorkers, $workerItem);
  2645. $sqlTemp .= " update biz_todowork set workteam_flag=0 where workteamid=" . intval($teamInfo["id"]) . ";";
  2646. $sqlTemp .= " update biz_todowork set updatetime=:nowtime, workteam_flag=1,`status`=:workstatus,remark=concat(:workremark,ifnull(remark,'')) ";
  2647. $sqlTemp .= " where id=" . intval($workerItem["tdwk_id"]) . ";";
  2648. if (intval($recruitInfo["enroll_audit"]) <= 0) { //不需要审核报名
  2649. $sqlTemp .= " update biz_todowork tdwk";
  2650. $sqlTemp .= " left join biz_trader_recruit btr on btr.id=tdwk.biz_recruitid ";
  2651. $sqlTemp .= " left join biz_todoworkteam tdwkt on tdwkt.id=tdwk.workteamid ";
  2652. $sqlTemp .= " set tdwk.updatetime=:nowtime, tdwk.`status`=:cancel_status, tdwk.`teamstatus`=:cancel_teamstatus ";
  2653. $sqlTemp .= " , tdwk.remark=concat(:cancel_remark,ifnull(tdwk.remark,'')), tdwk.teamremark=concat(:cancel_remark,ifnull(tdwk.teamremark,'')) ";
  2654. $sqlTemp .= " where tdwk.biz_workerid=" . intval($workerItem["id"]) . " and ( (tdwk.`workteam_mode`<=0 and tdwk.`status`=1) or (tdwk.`workteam_mode`>0 and tdwk.`teamstatus`>=2 and tdwkt.`status`=3) )
  2655. and(
  2656. (tdwk.todo_begindate>=:plandoDateStart and tdwk.todo_begindate<=:plandoDateFinish)
  2657. or(:nowSettleCatalog=0 and tdwk.todo_begindate>=:workDateStart and tdwk.todo_begindate<=:workDateFinish)
  2658. or( btr.settle_catalog<=0 and btr.finish_datetime>btr.begin_datetime and (
  2659. (btr.begin_datetime>=:workDateStart and btr.begin_datetime<=:workDateFinish)
  2660. or(btr.begin_datetime<=:workDateStart and btr.finish_datetime>=:workDateFinish)
  2661. or(btr.finish_datetime>=:workDateStart and btr.finish_datetime<=:workDateFinish)
  2662. ))
  2663. )
  2664. ;";
  2665. }
  2666. } else {
  2667. $sqlTemp .= " select :workstatus,:workremark; ";
  2668. if (intval($recruitInfo["enroll_audit"]) <= 0) { //不需要审核报名
  2669. $sqlTemp .= " select :cancel_status,:cancel_teamstatus,:cancel_remark,:plandoDateStart,:plandoDateFinish,:workDateStart,:workDateFinish,:nowSettleCatalog; ";
  2670. }
  2671. $sqlTemp .= " update biz_todowork set updatetime=:nowtime ";
  2672. $sqlTemp .= " ,`status`=-4 "; //0-待提交;1-已报名待审核;2-已审核;-1-报名被驳回;3-工资/佣金已全部结算;-2-取消报名;-3-被违约 -4-被动取消
  2673. $sqlTemp .= " ,remark=concat('[" . date("Y-m-d H:i:s", time()) . "] 组团提交报名时,不符合条件,被动取消 \n',ifnull(remark,'')) ";
  2674. $sqlTemp .= " where id=" . intval($workerItem["tdwk_id"]) . ";";
  2675. }
  2676. }
  2677. if (empty($newTeamWorkers)) {
  2678. throw new GeneralException("", "团组中竟然没有可报名项!");
  2679. }
  2680. if (count($newTeamWorkers) > $dateRemain) {
  2681. throw new GeneralException("dateNoEnough", array(
  2682. "tip" => "当日可报人数小于当前团组人数",
  2683. "dateRemain" => $dateRemain,
  2684. "teamTotal" => count($newTeamWorkers),
  2685. ));
  2686. }
  2687. $backdata = pdo_query3($sqlTemp, $sqlParam);
  2688. return $backdata;
  2689. });
  2690. return $backdata;
  2691. break;
  2692. case "enrollCancel":
  2693. $reason = isset($ajaxdata["reason"]) ? $ajaxdata["reason"] : $GPC["reason"];
  2694. $teamid = isset($ajaxdata["teamid"]) ? $ajaxdata["teamid"] : $GPC["teamid"];
  2695. if (intval($teamid) > 0) {
  2696. throw new GeneralException("", "非常抱歉,本平台已不再支持团组报名!");
  2697. $teamid = isset($ajaxdata["teamid"]) ? $ajaxdata["teamid"] : $GPC["teamid"];
  2698. if (intval($teamid) <= 0) {
  2699. throw new GeneralException("", "没有传递必要的teamid参数或参数值不正确");
  2700. }
  2701. $teamInfo = pdo_fetch("select * from biz_todoworkteam where id=" . intval($teamid));
  2702. if (empty($teamInfo)) {
  2703. throw new GeneralException("", "团组id没有对应的记录,请核查!");
  2704. }
  2705. if (intval($teamInfo["status"]) != 3) {
  2706. throw new GeneralException("", "此团组已不是报名待审核状态,请核查!");
  2707. }
  2708. if (intval($teamInfo["leader_workerid"]) != intval($bizWorker["id"])) {
  2709. throw new GeneralException("", "这不是您开的团,您无权取消此团的报名,请核查!");
  2710. }
  2711. $recruitId = intval($teamInfo["biz_recruitid"]);
  2712. $recruitInfo = pdo_fetch("select * from biz_trader_recruit where id=" . intval($recruitId));
  2713. if (empty($recruitInfo)) {
  2714. throw new GeneralException("", "没有定位到招聘记录信息,请核查!");
  2715. }
  2716. $planDotime = intval($teamInfo["plan_dotime"]);
  2717. $bizArgs = array("handleMode" => $handleMode, "bizWorker" => $bizWorker, "teamInfo" => $teamInfo, "recruitInfo" => $recruitInfo, "reason" => $reason);
  2718. } else {
  2719. $workId = isset($ajaxdata["workId"]) ? $ajaxdata["workId"] : $GPC["workId"];
  2720. if (intval($workId) <= 0) {
  2721. throw new GeneralException("", "没有传递必要的teamid/workId参数或参数值不正确");
  2722. }
  2723. $workInfo = pdo_fetch("select * from biz_todowork where id=" . intval($workId));
  2724. if (empty($workInfo)) {
  2725. throw new GeneralException("", "订单id没有对应的记录,请核查!");
  2726. }
  2727. if (intval($workInfo["status"]) != 1) {
  2728. throw new GeneralException("", "已不是报名待审核状态,请核查!");
  2729. }
  2730. if (intval($workInfo["workteam_mode"] != 0)) {
  2731. throw new GeneralException("", "此订单不是独立报名的记录,请核查!");
  2732. }
  2733. if (intval($workInfo["workteamid"] != 0)) {
  2734. throw new GeneralException("", "此订单不是独立报名的记录,请核查!");
  2735. }
  2736. if (intval($workInfo["biz_workerid"]) != intval($bizWorker["id"])) {
  2737. throw new GeneralException("", "这不是您的报名记录,您无权取消此记录的报名,请核查!");
  2738. }
  2739. $recruitId = intval($workInfo["biz_recruitid"]);
  2740. $recruitInfo = pdo_fetch("select * from biz_trader_recruit where id=" . intval($recruitId));
  2741. if (empty($recruitInfo)) {
  2742. throw new GeneralException("", "没有定位到招聘记录信息,请核查!");
  2743. }
  2744. $planDotime = intval($workInfo["todo_begindate"]);
  2745. $bizArgs = array("handleMode" => $handleMode, "bizWorker" => $bizWorker, "workInfo" => $workInfo, "recruitInfo" => $recruitInfo, "reason" => $reason);
  2746. }
  2747. //此处设置 $planDotime 是有道理的; 例如不能取消已经过期的报名;以及未来日期中已被违约的日期;
  2748. $backdata = bizbase_recruitWorkLock($recruitId, $planDotime, $bizArgs, function ($recruitId, $planDotime, $bizArgs, $mainRemain, $dateRemain, $restRemain) {
  2749. $handleMode = $bizArgs["handleMode"];
  2750. $bizWorker = $bizArgs["bizWorker"];
  2751. $recruitInfo = $bizArgs["recruitInfo"];
  2752. $teamInfo = $bizArgs["teamInfo"];
  2753. $workInfo = $bizArgs["workInfo"];
  2754. $reason = $bizArgs["reason"];
  2755. //-------------------------------------------
  2756. $sqlTemp = "";
  2757. $sqlParams = array();
  2758. $sqlParams[":nowtime"] = time();
  2759. $sqlParams[":wkstatus"] = -2; //0-待提交;1-已报名待审核;2-已审核;-1-报名被驳回;3-工资/佣金已全部结算;-2-取消报名;-3-被违约 -4-被动取消'
  2760. $sqlParams[":wkremark"] = "[" . date("Y-m-d H:i:s", time()) . "] 取消报名并退还冻结的押金 $reason \n";
  2761. if (!empty($teamInfo)) {
  2762. throw new GeneralException("", "非常抱歉,本平台已不再支持团组报名!");
  2763. $sqlParams[":status"] = 7; //0-待成团;1-已成团待提交报名;2-已解散;3-已报名待审核;4-报名已审核通过;5-报名被驳回;6-被违约;7-主动取消报名;8-被动取消报名'
  2764. $sqlParams[":remark"] = "[" . date("Y-m-d H:i:s", time()) . "] 取消报名 $reason \n";
  2765. $sqlTemp .= " update biz_todoworkteam set updatetime=:nowtime,`status`=:status, remark=concat(:remark,ifnull(remark,'')) ";
  2766. $sqlTemp .= " where id=" . intval($teamInfo["id"]) . ";";
  2767. $sqlTemp .= " update biz_todowork set updatetime=:nowtime,`status`=:wkstatus, remark=concat(:wkremark,ifnull(remark,'')) ";
  2768. $sqlTemp .= " where workteamid=" . intval($teamInfo["id"]) . " ";
  2769. $sqlTemp .= " and workteam_mode>0 and teamstatus>=2;";
  2770. } else {
  2771. $sqlTemp .= " update biz_todowork set updatetime=:nowtime,`status`=:wkstatus, remark=concat(:wkremark,ifnull(remark,'')) ";
  2772. $sqlTemp .= " where id=" . intval($workInfo["id"]) . ";";
  2773. $sqlTemp .= " insert into biz_worker_account ( `biz_workerid`, `createtime`,`type`, `money`, `status`, `biz_catalog`,`biz_id`, remark )";
  2774. // $sqlTemp .=" select biz_workerid , :nowtime , 0 , enroll_premoney, 1, 5 , id, :wkremark ";
  2775. $sqlTemp .= " select biz_workerid , :nowtime , 0 , enroll_premoney, 1, 7 , id, :wkremark ";
  2776. $sqlTemp .= " from biz_todowork where id=" . intval($workInfo["id"]) . ";";
  2777. }
  2778. $backdata = pdo_query3($sqlTemp, $sqlParams);
  2779. $cancelCount = pdo_fetchcolumn("select count(*)
  2780. from biz_todowork tdwk
  2781. left join biz_todoworkteam tdwkt on tdwkt.id=tdwk.workteamid
  2782. where
  2783. ( (tdwk.workteam_mode<=0 and tdwk.biz_workerid=:biz_workerid
  2784. and tdwk.`status`=-2 and tdwk.updatetime>=:queryDateTimeStart)
  2785. or (tdwk.workteam_mode>0 and tdwkt.leader_workerid=:biz_workerid
  2786. and tdwkt.`status`=7 and tdwkt.updatetime>=:queryDateTimeStart)) ", array(
  2787. ":biz_workerid" => $bizWorker["id"],
  2788. ":queryDateTimeStart" => strtotime("-30day", strtotime(date("Y-m-d", time()))),
  2789. ));
  2790. if (intval($cancelCount) >= 10) {
  2791. $sqlParams = array();
  2792. $sqlParams[":nowtime"] = time();
  2793. $sqlParams[":biz_workerid"] = $bizWorker["id"];
  2794. $sqlParams[":catalog"] = 3; //0-上班迟到;1-违规线下交易;2-主动违约;3-多次取消被停用;
  2795. $sqlParams[":hanging_endtime"] = strtotime("+7day");
  2796. $sqlParams[":remark"] = "[" . date("Y-m-d H:i:s", time()) . "] 一个月内主动取消10次停用一周 \n";
  2797. $backdata = pdo_query3("insert into biz_worker_breaklaw set createtime=:nowtime
  2798. , `biz_workerid`=:biz_workerid, `catalog`=:catalog, remark=concat(:remark,ifnull(remark,''));
  2799. update biz_worker set hanging=2,hanging_endtime=:hanging_endtime,hangopt_remak=concat(:remark,ifnull(hangopt_remak,'')) where id=:biz_workerid;
  2800. ", $sqlParams);
  2801. } else if (intval($cancelCount) >= 5) {
  2802. try {
  2803. include_once WEB_PHY_ROOT . "/base/smslib.php";
  2804. $sended = alisms_sendSms($bizWorker["mobile"], AliSMS_TMPCODE_444, AliSMS_CODE_TMPSIGN, array(
  2805. "name" => empty($bizWorker["true_name"]) ? $bizWorker["nickname"] : $bizWorker["true_name"],
  2806. ));
  2807. } catch (Throwable $ex) {
  2808. eeglobal_log_handler("alisms", "error", "取消次数太多提醒,短信发送失败 {$workId} " . $ex->getMessage());
  2809. }
  2810. }
  2811. return $cancelCount;
  2812. });
  2813. return $backdata;
  2814. break;
  2815. case "auditEnroll":
  2816. $todo = isset($ajaxdata["todo"]) ? $ajaxdata["todo"] : $GPC["todo"];
  2817. $reason = isset($ajaxdata["reason"]) ? $ajaxdata["reason"] : $GPC["reason"];
  2818. $teamid = isset($ajaxdata["teamid"]) ? $ajaxdata["teamid"] : $GPC["teamid"];
  2819. $minaCode = isset($ajaxdata["minaCode"]) ? $ajaxdata["minaCode"] : $GPC["minaCode"];
  2820. // $update_sql = "update biz_worker_account set status=1 where biz_workerid = 314";
  2821. // $backdata=pdo_query3($update_sql,array());
  2822. // var_dump($backdata);die;
  2823. if (intval($teamid) > 0) {
  2824. throw new GeneralException("", "非常抱歉,本平台已不再支持团组报名!");
  2825. $teamid = isset($ajaxdata["teamid"]) ? $ajaxdata["teamid"] : $GPC["teamid"];
  2826. if (intval($teamid) <= 0) {
  2827. throw new GeneralException("", "没有传递必要的teamid参数或参数值不正确");
  2828. }
  2829. $teamInfo = pdo_fetch("select * from biz_todoworkteam where id=" . intval($teamid));
  2830. if (empty($teamInfo)) {
  2831. throw new GeneralException("", "团组id没有对应的记录,请核查!");
  2832. }
  2833. if (intval($teamInfo["status"]) != 3) {
  2834. throw new GeneralException("", "此团组已不是报名待审核状态,请核查!");
  2835. }
  2836. $recruitId = intval($teamInfo["biz_recruitid"]);
  2837. $recruitInfo = pdo_fetch("select * from biz_trader_recruit where id=" . intval($recruitId));
  2838. if (empty($recruitInfo)) {
  2839. throw new GeneralException("", "没有定位到招聘记录信息,请核查!");
  2840. }
  2841. if (intval($recruitInfo["biz_traderid"]) != intval($bizTrader["id"])) {
  2842. throw new GeneralException("", "这个招聘记录不是您的信息,请核查!");
  2843. }
  2844. $planDotime = intval($teamInfo["plan_dotime"]);
  2845. $bizArgs = array("handleMode" => $handleMode, "bizTrader" => $bizTrader, "teamInfo" => $teamInfo, "recruitInfo" => $recruitInfo, "todo" => $todo, "reason" => $reason);
  2846. } else {
  2847. $workId = isset($ajaxdata["workid"]) ? $ajaxdata["workid"] : $GPC["workid"];
  2848. if (intval($workId) <= 0) {
  2849. throw new GeneralException("", "没有传递必要的teamid/workid参数或参数值不正确");
  2850. }
  2851. $workInfo = pdo_fetch("select * from biz_todowork where id=" . intval($workId));
  2852. if (empty($workInfo)) {
  2853. throw new GeneralException("", "订单id没有对应的记录,请核查!");
  2854. }
  2855. if (intval($workInfo["workteam_mode"] != 0)) {
  2856. throw new GeneralException("", "此订单不是独立报名的记录,请核查!");
  2857. }
  2858. if (intval($workInfo["workteamid"] != 0)) {
  2859. throw new GeneralException("", "此订单不是独立报名的记录,请核查!");
  2860. }
  2861. if (intval($workInfo["status"] != 1)) {
  2862. throw new GeneralException("", "此订单已不是报名待审核状态,请核查!");
  2863. }
  2864. $recruitId = intval($workInfo["biz_recruitid"]);
  2865. $recruitInfo = pdo_fetch("select * from biz_trader_recruit where id=" . intval($recruitId));
  2866. if (empty($recruitInfo)) {
  2867. throw new GeneralException("", "没有定位到招聘记录信息,请核查!");
  2868. }
  2869. if (intval($recruitInfo["biz_traderid"]) != intval($bizTrader["id"])) {
  2870. throw new GeneralException("", "这个招聘记录不是您的信息,请核查!");
  2871. }
  2872. $planDotime = intval($workInfo["todo_begindate"]);
  2873. $bizArgs = array("handleMode" => $handleMode, "bizTrader" => $bizTrader, "workInfo" => $workInfo, "recruitInfo" => $recruitInfo, "todo" => $todo, "reason" => $reason, "minaCode" => $minaCode);
  2874. }
  2875. $biz_todowork_count = "select count(*) as todowork_count from biz_todowork where biz_recruitid={$bizArgs['recruitInfo']['id']} and status = 2";
  2876. $biz_todowork_count_find = pdo_fetch($biz_todowork_count, array());
  2877. if ($bizArgs['recruitInfo']['need_total'] == $biz_todowork_count_find['todowork_count']) {
  2878. throw new GeneralException("", "招聘人数已满!");
  2879. }
  2880. $backdata = bizbase_recruitWorkLock($recruitId, $planDotime, $bizArgs, function ($recruitId, $planDotime, $bizArgs, $mainRemain, $dateRemain, $restRemain) {
  2881. $handleMode = $bizArgs["handleMode"];
  2882. $bizTrader = $bizArgs["bizTrader"];
  2883. $recruitInfo = $bizArgs["recruitInfo"];
  2884. $teamInfo = $bizArgs["teamInfo"];
  2885. $workInfo = $bizArgs["workInfo"];
  2886. $todo = $bizArgs["todo"];
  2887. $reason = $bizArgs["reason"];
  2888. $minaCode = $bizArgs["minaCode"];
  2889. //-------------------------------------------
  2890. $sqlTemp = "";
  2891. $sqlParams = array();
  2892. $sqlParams[":nowtime"] = time();
  2893. $sqlParams[":cancel_remark"] = "[" . date("Y-m-d H:i:s", time()) . "] 已被其他商家及时录取,本待录用申请被取消 \n";
  2894. $sqlParams[":cancel_status"] = -4; //0-待提交;1-已报名待审核;2-已审核;-1-报名被驳回;3-工资/佣金已全部结算;-2-取消报名;-3-被违约 -4-被动取消
  2895. $sqlParams[":cancel_teamstatus"] = -4; //0-待参团;1-已提交参团;2-已入团;-1-参团被驳回;-2-参团被踢出;-3-已解散;-4-被动取消;
  2896. $sqlParams[":workDateStart"] = intval($recruitInfo["begin_datetime"]);
  2897. $sqlParams[":workDateFinish"] = $sqlParams[":workDateStart"];
  2898. if (
  2899. intval($recruitInfo["settle_catalog"]) <= 0 //普通招聘的多日招聘
  2900. && intval($recruitInfo["begin_datetime"]) < intval($recruitInfo["finish_datetime"])
  2901. ) {
  2902. $sqlParams[":workDateFinish"] = intval($recruitInfo["finish_datetime"]);
  2903. }
  2904. if (intval($recruitInfo["settle_catalog"]) > 0) {
  2905. $sqlParams[":workDateStart"] = strtotime(date("Y-m-d", $planDotime));
  2906. $sqlParams[":workDateFinish"] = strtotime(date("Y-m-d 23:59:59", $planDotime));
  2907. }
  2908. $sqlParams[":nowSettleCatalog"] = intval($recruitInfo["settle_catalog"]);
  2909. $sqlParams[":plandoDateStart"] = strtotime(date("Y-m-d", $planDotime));
  2910. $sqlParams[":plandoDateFinish"] = strtotime(date("Y-m-d 23:59:59", $planDotime));
  2911. $sqlTemp .= " set @a0=:cancel_status,@a1=:cancel_teamstatus,@a2=:cancel_remark,@a3=:plandoDateStart,@a4=:plandoDateFinish,@a5=:workDateStart,@a6=:workDateFinish,@a7=:nowSettleCatalog; ";
  2912. if (!empty($teamInfo)) {
  2913. throw new GeneralException("", "非常抱歉,本平台已不再支持团组报名!");
  2914. $teamMemberCount = pdo_fetchcolumn("select count(*) from biz_todowork where workteam_mode>0 and teamstatus>=2 and workteamid=" . intval($teamInfo["id"]) . " ");
  2915. if (intval($teamMemberCount) <= 0) {
  2916. throw new GeneralException("", "此团组中竟然没有任何有效团项,请核查!");
  2917. }
  2918. switch (trim($todo)) {
  2919. case "allow":
  2920. $sqlParams[":status"] = 4; //0-待成团;1-已成团待提交报名;2-已解散;3-已报名待审核;4-报名已审核通过;5-报名被驳回;6-被违约;7-主动取消报名;8-被动取消报名'
  2921. $sqlParams[":remark"] = "[" . date("Y-m-d H:i:s", time()) . "] 组团报名已审核通过 $reason \n";
  2922. $sqlParams[":wkstatus"] = 2; //0-待提交;1-已报名待审核;2-已审核;-1-报名被驳回;3-工资/佣金已全部结算;-2-取消报名;-3-被违约 -4-被动取消'
  2923. $sqlParams[":wkremark"] = "[" . date("Y-m-d H:i:s", time()) . "] 组团报名已审核通过 $reason \n";
  2924. $sqlTemp .= " insert into biz_message_queue( createtime, biz_catalog, biz_id)";
  2925. $sqlTemp .= " select :nowtime, 0, id";
  2926. $sqlTemp .= " from biz_todowork ";
  2927. $sqlTemp .= " where workteamid=" . intval($teamInfo["id"]) . " ";
  2928. $sqlTemp .= " and workteam_mode>0 and teamstatus>=2;";
  2929. //----------------------------------------------------------
  2930. $sqlTemp .= " update biz_todowork set workteam_flag=0 where workteam_mode>0 and teamstatus>=2 and workteamid=" . intval($teamInfo["id"]) . ";";
  2931. $sqlTemp .= " select @teamflagid:=id from biz_todowork where workteam_mode>0 and teamstatus>=2 and workteamid=" . intval($teamInfo["id"]) . " limit 1;";
  2932. $sqlTemp .= " update biz_todowork set workteam_flag=1 where ifnull(@teamflagid,0)>0 and id=@teamflagid;";
  2933. //----------------------------------------------------------
  2934. $sqlTemp .= " update biz_todowork tdwk";
  2935. $sqlTemp .= " left join biz_trader_recruit btr on btr.id=tdwk.biz_recruitid ";
  2936. $sqlTemp .= " left join biz_todoworkteam tdwkt on tdwkt.id=tdwk.workteamid ";
  2937. $sqlTemp .= " set tdwk.updatetime=:nowtime, tdwk.`status`=:cancel_status, tdwk.`teamstatus`=:cancel_teamstatus ";
  2938. $sqlTemp .= " , tdwk.remark=concat(:cancel_remark,ifnull(tdwk.remark,'')), tdwk.teamremark=concat(:cancel_remark,ifnull(tdwk.teamremark,'')) ";
  2939. $sqlTemp .= " where tdwk.workteamid<>" . intval($teamInfo["id"]) . "
  2940. and tdwk.biz_workerid in (select biz_workerid from biz_todowork where workteam_mode>0 and teamstatus>=2 and workteamid=" . intval($teamInfo["id"]) . ")
  2941. and ( (tdwk.`workteam_mode`<=0 and tdwk.`status`=1) or (tdwk.`workteam_mode`>0 and tdwk.`teamstatus`>=2 and tdwkt.`status`=3) )
  2942. and(
  2943. (tdwk.todo_begindate>=:plandoDateStart and tdwk.todo_begindate<=:plandoDateFinish)
  2944. or(:nowSettleCatalog=0 and tdwk.todo_begindate>=:workDateStart and tdwk.todo_begindate<=:workDateFinish)
  2945. or( btr.settle_catalog<=0 and btr.finish_datetime>btr.begin_datetime and (
  2946. (btr.begin_datetime>=:workDateStart and btr.begin_datetime<=:workDateFinish)
  2947. or(btr.begin_datetime<=:workDateStart and btr.finish_datetime>=:workDateFinish)
  2948. or(btr.finish_datetime>=:workDateStart and btr.finish_datetime<=:workDateFinish)
  2949. ))
  2950. )
  2951. ;";
  2952. break;
  2953. case "refuse":
  2954. if (empty(trim($reason))) {
  2955. throw new GeneralException("", "没有传递必要的reason参数");
  2956. }
  2957. $sqlParams[":status"] = 5; //0-待成团;1-已成团待提交报名;2-已解散;3-已报名待审核;4-报名已审核通过;5-报名被驳回;6-被违约;7-主动取消报名;8-被动取消报名'
  2958. $sqlParams[":remark"] = "[" . date("Y-m-d H:i:s", time()) . "] 组团报名被拒绝:$reason \n";
  2959. $sqlParams[":wkstatus"] = -1; //0-待提交;1-已报名待审核;2-已审核;-1-报名被驳回;3-工资/佣金已全部结算;-2-取消报名;-3-被违约 -4-被动取消'
  2960. $sqlParams[":wkremark"] = "[" . date("Y-m-d H:i:s", time()) . "] 报名被拒绝:$reason \n";
  2961. break;
  2962. default:
  2963. throw new GeneralException("", "没有传递必要的todo参数或参数值不正确");
  2964. }
  2965. $sqlTemp .= " update biz_todoworkteam set updatetime=:nowtime,`status`=:status, remark=concat(:remark,ifnull(remark,'')) ";
  2966. $sqlTemp .= " where id=" . intval($teamInfo["id"]) . ";";
  2967. $sqlTemp .= " update biz_todowork set updatetime=:nowtime,`status`=:wkstatus, remark=concat(:wkremark,ifnull(remark,'')) ";
  2968. $sqlTemp .= " where workteamid=" . intval($teamInfo["id"]) . " ";
  2969. $sqlTemp .= " and workteam_mode>0 and teamstatus>=2;";
  2970. } else {
  2971. switch (trim($todo)) {
  2972. case "allow": //带预支付工单费用模式的录用处理
  2973. $accountInfo = bizbase_traderAccountInfo($bizTrader);
  2974. $money_balance = round(floatval($accountInfo["balance"]), 2);
  2975. $nowPayMoney = round(floatval($recruitInfo["feetotal"] - $money_balance), 2);
  2976. if ($nowPayMoney <= 0) {
  2977. $nowPayMoney = 0;
  2978. }
  2979. //将来在收支明细中过滤掉money=0的记录;
  2980. $sqlParam = array();
  2981. $sqlParam[":nowtime"] = time();
  2982. $sqlParam[":biz_traderid"] = $bizTrader["id"];
  2983. $sqlParam[":biz_roletype"] = 0;
  2984. $sqlParam[":biz_userid"] = $bizTrader["id"];
  2985. $sqlParam[":type"] = 0; //收支类型:0-收入;1-支出;
  2986. $sqlParam[":biz_catalog"] = 1; //工单支付业务
  2987. if (intval($workInfo["status"]) != 1) {
  2988. throw new GeneralException("", "此订单不是待录用状态,请核查!");
  2989. }
  2990. $sqlParam[":money"] = $nowPayMoney; //收入:0-次数支付;1-支付订单;
  2991. $sqlParam[":biz_id"] = intval($workInfo["id"]);
  2992. //统一固定的订单支付ID,避免重复支付
  2993. $sqlParam[":biz_idtag"] = "WKID" . intval($workInfo["id"]) . "EE" . intval($workInfo["paytag"]);
  2994. $sqlParam[":remark"] = "[" . date("Y-m-d H:i:s", time()) . "] 录用时预付工单费用 \n";
  2995. $sqlTemp = "";
  2996. $sqlTemp .= " insert into biz_trader_account set createtime=:nowtime";
  2997. $sqlTemp .= " ,biz_traderid=:biz_traderid, biz_roletype=:biz_roletype, biz_userid=:biz_userid ";
  2998. $sqlTemp .= " ,type=:type, `money`=:money";
  2999. $sqlTemp .= " ,biz_catalog=:biz_catalog, biz_id=:biz_id, biz_idtag=:biz_idtag";
  3000. $sqlTemp .= " ,`status`=0, remark=:remark;";
  3001. $sqlTemp .= " select * from biz_trader_account where id=LAST_INSERT_ID();";
  3002. $dataset = pdo_query3($sqlTemp, $sqlParam);
  3003. $bizInfo = $dataset[count($dataset) - 1][0];
  3004. if (empty($bizInfo)) {
  3005. throw new GeneralException("", "构建预支付订单异常");
  3006. }
  3007. $payBizCatalog = "11"; //11-【新】订单支付业务
  3008. $payBizId = $bizInfo["id"];
  3009. if ($nowPayMoney <= 0) {
  3010. bizbase_paySuccess($payBizCatalog, $payBizId, false, "manhandle");
  3011. return array("payResult" => true);
  3012. } else {
  3013. //---------------------------------------
  3014. if (empty(trim($minaCode))) {
  3015. throw new GeneralException("", "没有传递必要的minaCode参数");
  3016. }
  3017. $payScene = "JSAPI";
  3018. $prePayArgs = array(
  3019. "payBackBizCatalog" => $payBizCatalog,
  3020. "payBackBizId" => $payBizId,
  3021. "payScene" => $payScene,
  3022. );
  3023. require_once WEB_PHY_ROOT . "/base/wxsrv.php";
  3024. $resObj = bizwx_fetchMinaOpenidCore(SUBSYS_CAPITAL_MINA);
  3025. $wxmina_appid = $resObj["wxmina_appid"];
  3026. $wxmina_openid = $resObj["openid"];
  3027. $bizArgs = array(
  3028. "minaCode" => $minaCode,
  3029. "bizInfo" => $bizInfo,
  3030. "handleMode" => $handleMode,
  3031. "bizUser" => $bizTrader,
  3032. "wxmina_appid" => $wxmina_appid,
  3033. "wxmina_openid" => $wxmina_openid,
  3034. );
  3035. try {
  3036. $prePayInfo = bizbase_todoWorkPayCore($prePayArgs, $bizArgs);
  3037. } catch (Throwable $ex) {
  3038. $errMsg = $ex->getMessage();
  3039. if (mb_strpos($errMsg, "201 商户订单号重复") === false) {
  3040. throw $ex;
  3041. } else {
  3042. require_once WEB_PHY_ROOT . "/base/wxsrv.php";
  3043. $result = weixin_ordercloseV3($bizInfo["biz_idtag"]);
  3044. $dataset = pdo_query3("update biz_todowork set updatetime=:nowtime
  3045. ,paytag=ifnull(paytag,0)+1, remark=concat('更新支付订单号后缀',ifnull(remark,''))
  3046. where id=:wkid;
  3047. select @biz_idtag:=concat('WKID',id,'EE',paytag) from biz_todowork where id=:wkid;
  3048. update biz_trader_account set updatetime=:nowtime
  3049. ,biz_idtag=@biz_idtag, remark=concat('更新支付订单号后缀',ifnull(remark,''))
  3050. where id=:bizid;
  3051. select @biz_idtag:=concat('WKID',id,'EE',paytag) from biz_todowork where id=:wkid;
  3052. select * from biz_trader_account where id=:bizid;", array(
  3053. ":nowtime" => time(),
  3054. ":wkid" => intval($workInfo["id"]),
  3055. ":bizid" => intval($bizInfo["id"]),
  3056. ));
  3057. $bizInfo = $dataset[count($dataset) - 1][0];
  3058. $bizArgs["bizInfo"] = $bizInfo;
  3059. $prePayInfo = bizbase_todoWorkPayCore($prePayArgs, $bizArgs);
  3060. }
  3061. }
  3062. $prePayInfo = array_merge($prePayArgs, $prePayInfo);
  3063. return array(
  3064. "moneyBalance" => $money_balance,
  3065. "payMoney" => $nowPayMoney,
  3066. "prePayInfo" => $prePayInfo,
  3067. );
  3068. }
  3069. break;
  3070. case "refuse":
  3071. if (empty(trim($reason))) {
  3072. throw new GeneralException("", "没有传递必要的reason参数");
  3073. }
  3074. $sqlParams[":wkstatus"] = -1; //0-待提交;1-已报名待审核;2-已审核;-1-报名被驳回;3-工资/佣金已全部结算;-2-取消报名;-3-被违约 -4-被动取消'
  3075. $sqlParams[":wkremark"] = "[" . date("Y-m-d H:i:s", time()) . "] 报名被拒绝(退还押金):$reason \n";
  3076. //返还押金对冲
  3077. $sqlTemp .= " insert into biz_worker_account ( `biz_workerid`, `createtime`,`type`, `money`, `status`, `biz_catalog`,`biz_id`, remark )";
  3078. $sqlTemp .= " select biz_workerid , :nowtime , 0 , enroll_premoney, 1, 7 , id, :wkremark ";
  3079. $sqlTemp .= " from biz_todowork where id=" . intval($workInfo["id"]) . ";";
  3080. $sqlTemp .= " update biz_todowork set updatetime=:nowtime,`status`=:wkstatus, remark=concat(:wkremark,ifnull(remark,'')) ";
  3081. $sqlTemp .= " where id=" . intval($workInfo["id"]) . ";";
  3082. $dataset = pdo_query3($sqlTemp, $sqlParams);
  3083. return $dataset;
  3084. break;
  3085. default:
  3086. throw new GeneralException("", "没有传递必要的todo参数或参数值不正确");
  3087. }
  3088. }
  3089. });
  3090. return $backdata;
  3091. break;
  3092. case "processControlByWorker":
  3093. $remark = isset($ajaxdata["remark"]) ? $ajaxdata["remark"] : $GPC["remark"];
  3094. $todo = isset($ajaxdata["todo"]) ? $ajaxdata["todo"] : $GPC["todo"];
  3095. $workIds = isset($ajaxdata["workIds"]) ? $ajaxdata["workIds"] : $GPC["workIds"];
  3096. if (empty($workIds)) {
  3097. throw new GeneralException("", "没有传递必要的workIds参数");
  3098. }
  3099. $idSet = array();
  3100. foreach ($workIds as $item) {
  3101. array_push($idSet, intval($item));
  3102. }
  3103. $idSet = implode(",", $idSet);
  3104. $todoworkList = pdo_fetchall("select tdwk.*,btr.begin_hour2 as btr_begin_hour2
  3105. from biz_todowork tdwk
  3106. left join biz_trader_recruit btr on btr.id=tdwk.biz_recruitid
  3107. where tdwk.id in ({$idSet}) ");
  3108. if (empty($todoworkList)) {
  3109. throw new GeneralException("", "没有定位到任何订单记录!");
  3110. }
  3111. $sqlTemp = "";
  3112. $sqlParam = array();
  3113. $sqlParam[":nowtime"] = time();
  3114. switch (trim($todo)) {
  3115. case "start":
  3116. $sqlParam[":status"] = 3;
  3117. $sqlParam[":remark"] = "[" . date("Y-m-d H:i:s", time()) . "] 开始工作 $remark \n";
  3118. break;
  3119. case "finish":
  3120. $sqlParam[":status"] = 4;
  3121. $sqlParam[":remark"] = "[" . date("Y-m-d H:i:s", time()) . "] 结束工作 $remark \n";
  3122. break;
  3123. default:
  3124. throw new GeneralException("", "不支持的todo!");
  3125. }
  3126. foreach ($todoworkList as $item) {
  3127. if (intval($item["deleted"]) != 0) {
  3128. throw new GeneralException("", "订单记录已被删除了!");
  3129. }
  3130. if (intval($item["biz_workerid"]) != intval($bizWorker["id"])) {
  3131. throw new GeneralException("", "订单记录不是您的!");
  3132. }
  3133. $payqrParamName = ":payqr" . $item["id"];
  3134. $paycodeParamName = ":paycode" . $item["id"];
  3135. switch (trim($todo)) {
  3136. case "start":
  3137. $sqlParam[$payqrParamName] = "";
  3138. $sqlParam[$paycodeParamName] = "";
  3139. if (intval($item["status"]) != 2) {
  3140. throw new GeneralException("", "订单不是待开工状态!");
  3141. }
  3142. // if (strtotime(date("Y-m-d",intval($item["todo_begindate"]))) > strtotime(date("Y-m-d",time())))
  3143. // throw new GeneralException("", "还未到开工日期,还不能开工!");
  3144. // if ((strtotime(date("Y-m-d",intval($item["todo_begindate"])))+intval($item["btr_begin_hour2"])) > time())
  3145. // throw new GeneralException("", "还未到开工时间,还不能开工!");
  3146. $sqlExtra = " ,worked_begintime=:nowtime ";
  3147. break;
  3148. case "finish":
  3149. if (intval($item["status"]) != 3) {
  3150. throw new GeneralException("", "订单不是待完工状态!");
  3151. }
  3152. $sqlExtra = " ,worked_finishtime=:nowtime ";
  3153. $padLength = (6 - mb_strlen($item["id"] . ""));
  3154. $padPrefix = "";
  3155. for ($iii = 1; $iii <= $padLength; $iii++) {
  3156. $padPrefix .= ($iii == 1 ? "A" : "0");
  3157. }
  3158. $sqlParam[$paycodeParamName] = $padPrefix . $item["id"];
  3159. //-----------------------------------------------------
  3160. $sqlParam[$payqrParamName] = WEB_URL_FILEROOT . "/SALARYPAY/PAYQR_" . $item["id"] . "_";
  3161. $phySavePath = WEB_PHY_FILEROOT . "/SALARYPAY/PAYQR_" . $item["id"] . "_";
  3162. $qrcatalog = 0; //0-普通二维码;1-小程序码;
  3163. switch ($qrcatalog) {
  3164. case 0:
  3165. $sqlParam[$payqrParamName] .= "qr.png";
  3166. $phySavePath .= "qr.png";
  3167. require_once WEB_PHY_ROOT . "/base/lib_qr.php";
  3168. //$linkhref=WEBAPI_IMG_HOSTURL."/index.php?workid=".intval($item["id"]);
  3169. $linkhref = "workid=" . intval($item["id"]);
  3170. lib_qrbuild2("png", $linkhref, $phySavePath, 200, 8);
  3171. break;
  3172. case 1:
  3173. $sqlParam[$payqrParamName] .= "qrmina.png";
  3174. $phySavePath .= "qrmina.png";
  3175. require_once WEB_PHY_ROOT . "/base/wxsrv.php";
  3176. $wxParams = bizwx_fetchWxParams(SUBSYS_CAPITAL2_MINA); //谁扫用谁
  3177. $mina_appid = $wxParams["mina_appid"];
  3178. $mina_appSecret = $wxParams["mina_appSecret"];
  3179. $bizCatalog = 0;
  3180. $bizId = intval($item["id"]);
  3181. $userId = intval($bizWorker["id"]);
  3182. weixin_getMinaQCode($mina_appid, $mina_appSecret, $phySavePath, $bizCatalog, $bizId, $userId, "pages/index/index");
  3183. break;
  3184. }
  3185. break;
  3186. default:
  3187. throw new GeneralException("", "不支持的todo!");
  3188. }
  3189. $sqlTemp .= " update biz_todowork set updatetime=:nowtime ";
  3190. $sqlTemp .= " ,`status`=:status, remark=concat(:remark,ifnull(remark,''))";
  3191. $sqlTemp .= " ,`payqr`=(case when {$payqrParamName}='' then payqr else {$payqrParamName} end) ";
  3192. $sqlTemp .= " ,`paycode`=(case when {$paycodeParamName}='' then paycode else {$paycodeParamName} end) ";
  3193. $sqlTemp .= $sqlExtra;
  3194. $sqlTemp .= " where id=" . intval($item["id"]) . ";";
  3195. }
  3196. $backdata = pdo_query3($sqlTemp, $sqlParam);
  3197. return $backdata;
  3198. break;
  3199. case "denyPay":
  3200. $reason = isset($ajaxdata["reason"]) ? $ajaxdata["reason"] : $GPC["reason"];
  3201. $workId = isset($ajaxdata["workid"]) ? $ajaxdata["workid"] : $GPC["workid"];
  3202. if (intval($workId) <= 0) {
  3203. throw new GeneralException("", "没有传递必要的workid参数或参数值不正确");
  3204. }
  3205. $workInfo = pdo_fetch("select tdwk.*,btr.biz_traderid
  3206. from biz_todowork tdwk
  3207. left join biz_trader_recruit btr on btr.id=tdwk.biz_recruitid
  3208. where tdwk.id=" . intval($workId));
  3209. if (empty($workInfo)) {
  3210. throw new GeneralException("", "订单id没有对应的记录,请核查!");
  3211. }
  3212. if (intval($workInfo["deleted"]) != 0) {
  3213. throw new GeneralException("", "信息已删除了,请核查后再处理!");
  3214. }
  3215. if (intval($workInfo["biz_traderid"]) != intval($bizTrader["id"])) {
  3216. throw new GeneralException("", "这个订单记录不是您的信息,请核查!");
  3217. }
  3218. /*if (intval($workInfo["status"] != 4)||!intval(in_array($workInfo["status"],[2,3,4]))) {
  3219. throw new GeneralException("", "不是待结算状态,请核查!");
  3220. }*/
  3221. if (!in_array($workInfo["status"], [2, 3, 4])) {
  3222. throw new GeneralException("", "不是待结算状态,请核查!");
  3223. }
  3224. $sqlParam = array();
  3225. $sqlParam[":nowtime"] = time();
  3226. $sqlParam[":workid"] = intval($workInfo["id"]);
  3227. $sqlParam[":remark"] = "[" . date("Y-m-d H:i:s", time()) . "] 提交拒绝支付申请 {$reason} \n";
  3228. $sqlTemp = "";
  3229. $sqlTemp .= " update biz_todowork set updatetime=:nowtime,`status`=90,remark=concat(:remark,remark) where id=:workid;";
  3230. $backdata = pdo_query3($sqlTemp, $sqlParam);
  3231. return $backdata;
  3232. break;
  3233. case "denyPayAudit":
  3234. $todo = isset($ajaxdata["todo"]) ? $ajaxdata["todo"] : $GPC["todo"];
  3235. $reason = isset($ajaxdata["reason"]) ? $ajaxdata["reason"] : $GPC["reason"];
  3236. $workId = isset($ajaxdata["workid"]) ? $ajaxdata["workid"] : $GPC["workid"];
  3237. if (intval($workId) <= 0) {
  3238. throw new GeneralException("", "没有传递必要的workid参数或参数值不正确");
  3239. }
  3240. $workInfo = pdo_fetch("select tdwk.*,btr.biz_traderid,btr.title as btr_title
  3241. from biz_todowork tdwk
  3242. left join biz_trader_recruit btr on btr.id=tdwk.biz_recruitid
  3243. where tdwk.id=" . intval($workId));
  3244. if (empty($workInfo)) {
  3245. throw new GeneralException("", "订单id没有对应的记录,请核查!");
  3246. }
  3247. if (intval($workInfo["deleted"]) != 0) {
  3248. throw new GeneralException("", "信息已删除了,请核查后再处理!");
  3249. }
  3250. if (intval($workInfo["status"] != 90)) {
  3251. throw new GeneralException("", "不是拒绝支付待审核状态,请核查!");
  3252. }
  3253. switch (trim($todo)) {
  3254. case "refuse": //将订单再次打回待结算状态,如果反反复复后,超过48小时未结算,则进入平台可强制结算;
  3255. $sqlParam = array();
  3256. $sqlParam[":nowtime"] = time();
  3257. $sqlParam[":workid"] = intval($workInfo["id"]);
  3258. $sqlParam[":remark"] = "[" . date("Y-m-d H:i:s", time()) . "] 驳回拒绝支付的申请 {$reason} \n";
  3259. $sqlTemp = "";
  3260. $sqlTemp .= " update biz_todowork set updatetime=:nowtime,`status`=4,remark=concat(:remark,remark) where id=:workid;";
  3261. $backdata = pdo_query3($sqlTemp, $sqlParam);
  3262. return $backdata;
  3263. break;
  3264. case "allow": //将会员押金转入商家账户,并返还商家工单费用,订单进入拒绝支付状态下;
  3265. $sqlParam = array();
  3266. $sqlParam[":nowtime"] = time();
  3267. $operatorName = empty($baseUser["login_name"]) ? "" : "(" . $baseUser["login_name"] . ")";
  3268. $sqlParam[":nowtime2"] = "[" . date("Y-m-d H:i:s", time()) . "] {$operatorName} ";
  3269. $sqlParam[":workid"] = intval($workInfo["id"]);
  3270. $sqlTemp = "";
  3271. // 阿东【进行修改,下方注释代码,为原来代码】退还押金 2020-06-18 16:20
  3272. $ratio = isset($ajaxdata["ratio"]) ? $ajaxdata["ratio"] : $GPC["ratio"]; //比例
  3273. if ($ratio > 1) {
  3274. throw new GeneralException("", "比例错误,不能大于 1 ");
  3275. }
  3276. // 为0的时候,代表商家预付款全额返还,即“完全会员责任”,此时需要将会员的押金补偿给商家,
  3277. // 0-1之间为比例,大于0时商家预付款30%表示支付给会员的金额,70%商家,会员押金原路返还
  3278. if ($ratio == 0) {
  3279. //wj 20221019
  3280. //全额 会员违约 会员押金全部给商家
  3281. //会员押金解冻
  3282. $sqlTemp .= " insert into biz_worker_account ( `biz_workerid`, `createtime`,`type`, `money`, `status`, `biz_catalog`,`biz_id`, remark )";
  3283. $sqlTemp .= " select biz_workerid , :nowtime , 0 , enroll_premoney, 1, 7 , id, concat(:nowtime2,'会员押金解冻\n') ";
  3284. $sqlTemp .= " from biz_todowork where id=:workid;";
  3285. //押金解冻 后转给商户
  3286. $sqlTemp .= " insert into biz_worker_account ( `biz_workerid`, `createtime`,`type`, `money`, `status`, `biz_catalog`,`biz_id`, remark )";
  3287. $sqlTemp .= " select biz_workerid , :nowtime , 1 , enroll_premoney, 1, 1 , id, concat(:nowtime2,'商家拒绝支付,用户押金付给商户\n') ";
  3288. $sqlTemp .= " from biz_todowork where id=:workid;";
  3289. //商家押金收入进账
  3290. $sqlTemp .= " insert into biz_trader_account ( `biz_traderid`, `createtime`,`type`, `money`, `status`, `biz_catalog`, `biz_id`, remark )";
  3291. $sqlTemp .= " select btr.biz_traderid, :nowtime , 0 , tdwk.enroll_premoney, 1, 7, tdwk.id, concat(:nowtime2,'会员违约,押金罚没收入\n') ";
  3292. $sqlTemp .= " from biz_todowork tdwk";
  3293. $sqlTemp .= " left join biz_trader_recruit btr on btr.id=tdwk.biz_recruitid ";
  3294. $sqlTemp .= " where tdwk.id=:workid;";
  3295. //拒绝支付后会员押金转给商户
  3296. //会员押金解冻
  3297. /*$sqlTemp .= " insert into biz_worker_account ( `biz_workerid`, `createtime`,`type`, `money`, `status`, `biz_catalog`,`biz_id`, remark )";
  3298. $sqlTemp .= " select biz_workerid , :nowtime , 0 , enroll_premoney, 1, 7 , id, concat(:nowtime2,'会员押金解冻\n') ";
  3299. $sqlTemp .= " from biz_todowork where id=:workid;";*/
  3300. //商家工单费用解冻(即退还)
  3301. $sqlTemp .= " insert into biz_trader_account ( `biz_traderid`, `createtime`,`type`, `money`, `status`, `biz_catalog`, `biz_id`, remark )";
  3302. $sqlTemp .= " select btr.biz_traderid, :nowtime , 0 , btr.feetotal, 1, 6, tdwk.id, concat(:nowtime2,'会员违约,工单费用解冻退还\n') ";
  3303. $sqlTemp .= " from biz_todowork tdwk";
  3304. $sqlTemp .= " left join biz_trader_recruit btr on btr.id=tdwk.biz_recruitid ";
  3305. $sqlTemp .= " where tdwk.id=:workid;";
  3306. //工单状态修正
  3307. $sqlTemp .= " update biz_todowork set updatetime=:nowtime,`status`= -5,remark=concat(:nowtime2,'拒绝支付通过审核,将会员押金转入商家账户,并返还商家工单费用\n',remark) where id=:workid;";
  3308. } else {
  3309. //wj 20221017 update
  3310. //非全额 会员无责任
  3311. //会员押金解冻
  3312. $sqlTemp .= " insert into biz_worker_account ( `biz_workerid`, `createtime`,`type`, `money`, `status`, `biz_catalog`,`biz_id`, remark )";
  3313. $sqlTemp .= " select biz_workerid , :nowtime , 0 , enroll_premoney, 1, 7 , id, concat(:nowtime2,'会员押金解冻\n') ";
  3314. $sqlTemp .= " from biz_todowork where id=:workid;";
  3315. //平台扣除冻结金额 type:1 ststus:6 工单整体支出 平衡冻结金额 wj
  3316. //商家押金解冻
  3317. $sqlTemp .= " insert into biz_trader_account ( `biz_traderid`, `createtime`,`type`, `money`, `status`, `biz_catalog`, `biz_id`, remark )";
  3318. $sqlTemp .= " select btr.biz_traderid, :nowtime , 0 , btr.feetotal, 1, 6, tdwk.id, concat(:nowtime2,'商家拒绝支付,后台审核成功,工单费用解冻退还\n') ";
  3319. $sqlTemp .= " from biz_todowork tdwk";
  3320. $sqlTemp .= " left join biz_trader_recruit btr on btr.id=tdwk.biz_recruitid ";
  3321. $sqlTemp .= " where tdwk.id=:workid;";
  3322. //工单金额
  3323. $feetotal = pdo_fetch("select btr.feetotal as feetotal from biz_todowork tdwk left join biz_trader_recruit btr on btr.id=tdwk.biz_recruitid where tdwk.id={$workInfo["id"]};");
  3324. // 会员应得工单的%$ratio = 金额
  3325. $user_money = round($feetotal['feetotal'] * $ratio, 2);
  3326. $sqlParam[":user_money"] = $user_money;
  3327. $sqlParam[":nowtime3"] = $sqlParam[":nowtime2"] . ",【工单({$workInfo['btr_title']})平台判定会员违约,商家补偿{$user_money}元】";
  3328. $sqlTemp .= " insert into biz_worker_account ( `biz_workerid`, `createtime`,`type`, `money`, `status`, `biz_catalog`,`biz_id`, remark )";
  3329. $sqlTemp .= " select biz_workerid , :nowtime , 0 , :user_money, 1, 0 , id, :nowtime3 ";
  3330. $sqlTemp .= " from biz_todowork where id=:workid;";
  3331. //商户支付补偿金额
  3332. $sqlParam[":shop_money"] = $user_money;
  3333. $sqlTemp .= " insert into biz_trader_account ( `biz_traderid`, `createtime`,`type`, `money`, `status`, `biz_catalog`, `biz_id`, remark )";
  3334. $sqlTemp .= " select btr.biz_traderid, :nowtime , 1 , :shop_money, 1, 1, tdwk.id, :nowtime3 ";
  3335. $sqlTemp .= " from biz_todowork tdwk";
  3336. $sqlTemp .= " left join biz_trader_recruit btr on btr.id=tdwk.biz_recruitid ";
  3337. $sqlTemp .= " where tdwk.id=:workid;";
  3338. $sqlTemp .= " update biz_todowork set updatetime=:nowtime,`status`= 5,`salary_status`= 1,remark=concat(:nowtime2,'拒绝支付通过审核,将会员押金原路返回,商家针对会员进行补偿\n',remark) where id=:workid;";
  3339. // 商户应得工单的 = 总工单金额- 会员应得的金额
  3340. /*$sqlParam[":shop_money"] = $feetotal['feetotal'] - $user_money;
  3341. $sqlTemp .= " insert into biz_trader_account ( `biz_traderid`, `createtime`,`type`, `money`, `status`, `biz_catalog`, `biz_id`, remark )";
  3342. $sqlTemp .= " select btr.biz_traderid, :nowtime , 0 , :shop_money, 1, 7, tdwk.id, :nowtime3 ";
  3343. $sqlTemp .= " from biz_todowork tdwk";
  3344. $sqlTemp .= " left join biz_trader_recruit btr on btr.id=tdwk.biz_recruitid ";
  3345. $sqlTemp .= " where tdwk.id=:workid;";
  3346. $sqlTemp .= " update biz_todowork set updatetime=:nowtime,`status`= 5,`salary_status`= 1,remark=concat(:nowtime2,'拒绝支付通过审核,将会员押金原路返回,商家针对会员进行补偿\n',remark) where id=:workid;";*/
  3347. //
  3348. }
  3349. $backdata = pdo_query3($sqlTemp, $sqlParam);
  3350. return $backdata;
  3351. // //会员押金解冻
  3352. // $sqlTemp.=" insert into biz_worker_account ( `biz_workerid`, `createtime`,`type`, `money`, `status`, `biz_catalog`,`biz_id`, remark )";
  3353. // $sqlTemp.=" select biz_workerid , :nowtime , 0 , enroll_premoney, 1, 7 , id, concat(:nowtime2,'会员违约时,先将押金解冻\n') ";
  3354. // $sqlTemp.=" from biz_todowork where id=:workid;";
  3355. // //会员押金罚没支出
  3356. // $sqlTemp.=" insert into biz_worker_account ( `biz_workerid`, `createtime`,`type`, `money`, `status`, `biz_catalog`,`biz_id`, remark )";
  3357. // $sqlTemp.=" select biz_workerid , :nowtime , 1 , enroll_premoney, 1, 3 , id, concat(:nowtime2,'会员违约时,押金罚没支出\n') ";
  3358. // $sqlTemp.=" from biz_todowork where id=:workid;";
  3359. // //商家押金收入进账
  3360. // $sqlTemp.=" insert into biz_trader_account ( `biz_traderid`, `createtime`,`type`, `money`, `status`, `biz_catalog`, `biz_id`, remark )";
  3361. // $sqlTemp.=" select btr.biz_traderid, :nowtime , 0 , tdwk.enroll_premoney, 1, 7, tdwk.id, concat(:nowtime2,'会员违约时,押金罚没收入\n') ";
  3362. // $sqlTemp.=" from biz_todowork tdwk";
  3363. // $sqlTemp.=" left join biz_trader_recruit btr on btr.id=tdwk.biz_recruitid ";
  3364. // $sqlTemp.=" where tdwk.id=:workid;";
  3365. // //商家工单费用解冻(即退还)
  3366. // $sqlTemp.=" insert into biz_trader_account ( `biz_traderid`, `createtime`,`type`, `money`, `status`, `biz_catalog`, `biz_id`, remark )";
  3367. // $sqlTemp.=" select btr.biz_traderid, :nowtime , 0 , btr.feetotal, 1, 6, tdwk.id, concat(:nowtime2,'会员违约时,工单费用解冻退还\n') ";
  3368. // $sqlTemp.=" from biz_todowork tdwk";
  3369. // $sqlTemp.=" left join biz_trader_recruit btr on btr.id=tdwk.biz_recruitid ";
  3370. // $sqlTemp.=" where tdwk.id=:workid;";
  3371. // //工单状态修正
  3372. // $sqlTemp.=" update biz_todowork set updatetime=:nowtime,`status`=-5,remark=concat(:nowtime2,'拒绝支付通过审核,将会员押金转入商家账户,并返还商家工单费用\n',remark) where id=:workid;";
  3373. //
  3374. // $backdata = pdo_query3($sqlTemp, $sqlParam);
  3375. break;
  3376. default:
  3377. throw new GeneralException("", "没有传递必要的todo参数或参数值不正确");
  3378. }
  3379. break;
  3380. case "waitPayByWorker":
  3381. case "waitPayByTrader":
  3382. case "waitPayByTrader2":
  3383. $workId = isset($ajaxdata["workid"]) ? $ajaxdata["workid"] : $GPC["workid"];
  3384. if (intval($workId) > 0) {
  3385. $workInfo = pdo_fetch("select tdwk.*
  3386. ,btr.biz_traderid, btr.feetotal as pay_feetotal
  3387. from biz_todowork tdwk
  3388. left join biz_trader_recruit btr on btr.id=tdwk.biz_recruitid
  3389. where tdwk.id=" . intval($workId));
  3390. if (empty($workInfo)) {
  3391. throw new GeneralException("", "订单id没有对应的记录,请核查!");
  3392. }
  3393. } else {
  3394. $workPayCode = isset($ajaxdata["workPayCode"]) ? $ajaxdata["workPayCode"] : $GPC["workPayCode"];
  3395. if (empty(trim($workPayCode))) {
  3396. throw new GeneralException("", "没有传递必要的workid/workPayCode参数或参数值不正确");
  3397. }
  3398. $workInfo = pdo_fetch("select tdwk.*
  3399. ,btr.biz_traderid, btr.feetotal as pay_feetotal
  3400. from biz_todowork tdwk
  3401. left join biz_trader_recruit btr on btr.id=tdwk.biz_recruitid
  3402. where tdwk.paycode=:paycode", array(":paycode" => trim($workPayCode)));
  3403. if (empty($workInfo)) {
  3404. throw new GeneralException("", "订单核销码没有对应的记录,请核查!");
  3405. }
  3406. }
  3407. $moneyUserId = intval($workInfo["biz_traderid"]);
  3408. $moneyRoleType = 0;
  3409. if ($handleMode == "waitPayByWorker") {
  3410. if (intval($workInfo["biz_workerid"] != intval($bizWorker["id"]))) {
  3411. throw new GeneralException("", "此订单不是您的记录,请核查!");
  3412. }
  3413. }
  3414. if ($handleMode == "waitPayByTrader") {
  3415. if (intval($workInfo["biz_traderid"] != intval($bizTrader["id"]))) {
  3416. throw new GeneralException("", "此订单所对应的招聘信息不是您的,请核查!");
  3417. }
  3418. }
  3419. if ($handleMode == "waitPayByTrader2") {
  3420. $delegateInfo = bizTrader2_getRecuritDelegate(intval($workInfo["biz_recruitid"]));
  3421. if (empty($delegateInfo) || intval($delegateInfo["biz_trader2id"]) != intval($bizTrader2["id"])) {
  3422. throw new GeneralException("", "您没有被授权此订单所对应的招聘信息,或授权已过期,请核查!");
  3423. }
  3424. $moneyUserId = intval($bizTrader2["id"]);
  3425. $moneyRoleType = 1;
  3426. }
  3427. if (intval($workInfo["status"] != 4)) {
  3428. throw new GeneralException("", "此订单不是待结算状态,请核查!");
  3429. }
  3430. $recruitId = intval($workInfo["biz_recruitid"]);
  3431. $recruitInfo = pdo_fetch("select * from biz_trader_recruit where id=" . intval($recruitId));
  3432. if (empty($recruitInfo)) {
  3433. throw new GeneralException("", "没有定位到招聘记录信息,请核查!");
  3434. }
  3435. $bizArgs = array("handleMode" => $handleMode, "bizUser" => $bizUser, "workInfo" => $workInfo, "recruitInfo" => $recruitInfo, "moneyUserId" => $moneyUserId, "moneyRoleType" => $moneyRoleType);
  3436. $backdata = bizbase_recruitWorkLock($recruitId, 0, $bizArgs, function ($recruitId, $planDotime, $bizArgs, $mainRemain, $dateRemain, $restRemain) {
  3437. $handleMode = $bizArgs["handleMode"];
  3438. $bizUser = $bizArgs["bizUser"];
  3439. $workInfo = $bizArgs["workInfo"];
  3440. $recruitInfo = $bizArgs["recruitInfo"];
  3441. $moneyUserId = $bizArgs["moneyUserId"];
  3442. $moneyRoleType = $bizArgs["moneyRoleType"];
  3443. $backdata = pdo_fetch("select tdwk.*
  3444. ,btr.title as recruitTitle
  3445. ,btr.feeper as totalfee
  3446. ,btr.plat_fetchmoney as plat_fetchmoney
  3447. ,btr.salary as salary
  3448. ,btr.sharer_fetchmoney as sharer_fetchmoney
  3449. ,bt.company_name,btbu.mobile as btbu_mobile
  3450. ,(select (sum(case when bta.type=0 then ifnull(money,0) else 0 end)
  3451. - sum(case when bta.type=1 then ifnull(money,0) else 0 end)) as money_balance
  3452. from biz_trader_account bta
  3453. where bta.deleted=0 and bta.biz_traderid=btr.biz_traderid
  3454. and bta.`biz_roletype`=:money_roletype and bta.biz_userid=:money_userid
  3455. and bta.`status`=1
  3456. ) as money_balance
  3457. from biz_todowork tdwk
  3458. left join biz_trader_recruit btr on btr.id=tdwk.biz_recruitid
  3459. left join biz_trader bt on bt.id=btr.biz_traderid
  3460. left join base_user btbu on btbu.id=bt.base_userid
  3461. where tdwk.id=:workid", array(
  3462. ":workid" => $workInfo["id"],
  3463. ":money_userid" => intval($moneyUserId),
  3464. ":money_roletype" => intval($moneyRoleType),
  3465. ));
  3466. $backdata["money_balance"] = round(floatval($backdata["money_balance"]), 2);
  3467. unset($backdata["teamremark"]);
  3468. unset($backdata["remark"]);
  3469. return $backdata;
  3470. });
  3471. return $backdata;
  3472. break;
  3473. case "paySettleByTrader":
  3474. case "paySettleByTrader2":
  3475. case "paySettleByPlater":
  3476. $workId = isset($ajaxdata["workid"]) ? $ajaxdata["workid"] : $GPC["workid"];
  3477. if (intval($workId) > 0) {
  3478. $workInfo = pdo_fetch("select tdwk.*
  3479. ,btr.biz_traderid, btr.feetotal as pay_feetotal
  3480. from biz_todowork tdwk
  3481. left join biz_trader_recruit btr on btr.id=tdwk.biz_recruitid
  3482. where tdwk.id=" . intval($workId));
  3483. if (empty($workInfo)) {
  3484. throw new GeneralException("", "订单id没有对应的记录,请核查!");
  3485. }
  3486. } else {
  3487. $workPayCode = isset($ajaxdata["workPayCode"]) ? $ajaxdata["workPayCode"] : $GPC["workPayCode"];
  3488. if (empty(trim($workPayCode))) {
  3489. throw new GeneralException("", "没有传递必要的workid/workPayCode参数或参数值不正确");
  3490. }
  3491. $workInfo = pdo_fetch("select tdwk.*
  3492. ,btr.biz_traderid, btr.feetotal as pay_feetotal
  3493. from biz_todowork tdwk
  3494. left join biz_trader_recruit btr on btr.id=tdwk.biz_recruitid
  3495. where tdwk.paycode=:paycode", array(":paycode" => trim($workPayCode)));
  3496. if (empty($workInfo)) {
  3497. throw new GeneralException("", "订单核销码没有对应的记录,请核查!");
  3498. }
  3499. }
  3500. $minaCode = isset($ajaxdata["minaCode"]) ? $ajaxdata["minaCode"] : $GPC["minaCode"];
  3501. $params = array("handleMode" => $handleMode, "baseUser" => $baseUser, "bizUser" => $bizUser, "bizTrader" => $bizTrader, "bizTrader2" => $bizTrader2, "srcWorkInfo" => $workInfo, "minaCode" => $minaCode);
  3502. $backdata = biz_flkForWork($workInfo["id"], $params, function ($params) {
  3503. $handleMode = $params["handleMode"];
  3504. $baseUser = $params["baseUser"];
  3505. $bizUser = $params["bizUser"];
  3506. $bizTrader = $params["bizTrader"];
  3507. $bizTrader2 = $params["bizTrader2"];
  3508. $srcWorkInfo = $params["srcWorkInfo"];
  3509. $minaCode = $params["minaCode"];
  3510. $operatorName = "";
  3511. switch ($handleMode) {
  3512. case "paySettleByTrader":
  3513. $operatorName = " ";
  3514. break;
  3515. case "paySettleByTrader2":
  3516. $operatorName = empty($baseUser["mobile"]) ? "" : "(" . $baseUser["mobile"] . ")";
  3517. break;
  3518. case "paySettleByPlater":
  3519. $operatorName = empty($baseUser["login_name"]) ? "" : "(" . $baseUser["login_name"] . ")";
  3520. break;
  3521. }
  3522. $workInfo = pdo_fetch("select tdwk.*
  3523. ,btr.biz_traderid, btr.feetotal as pay_feetotal
  3524. ,btr.plat_fetchmoney,btr.sharer_fetchmoney,btr.salary as wker_salary
  3525. from biz_todowork tdwk
  3526. left join biz_trader_recruit btr on btr.id=tdwk.biz_recruitid
  3527. where tdwk.id=" . intval($srcWorkInfo["id"]));
  3528. if ($handleMode == "paySettleByTrader") {
  3529. if (intval($workInfo["biz_traderid"] != intval($bizTrader["id"]))) {
  3530. throw new GeneralException("", "此订单所对应的招聘信息不是您的,请核查!");
  3531. }
  3532. }
  3533. if ($handleMode == "paySettleByTrader2") {
  3534. $delegateInfo = bizTrader2_getRecuritDelegate(intval($workInfo["biz_recruitid"]));
  3535. if (empty($delegateInfo) || intval($delegateInfo["biz_trader2id"]) != intval($bizTrader2["id"])) {
  3536. throw new GeneralException("", "您没有被授权此订单所对应的招聘信息,或授权已过期,请核查!");
  3537. }
  3538. }
  3539. if ($handleMode == "paySettleByPlater") {
  3540. if (!(intval($workInfo["status"]) == 4 || intval($workInfo["status"]) == -5 || intval($workInfo["status"]) == -8)) {
  3541. throw new GeneralException("", "此订单不是待结算或拒绝支付或超48小时未结算状态,请核查!");
  3542. }
  3543. } else {
  3544. /*
  3545. * 改为 录用即可核销
  3546. * 20220929 wj
  3547. */
  3548. /*if (intval($workInfo["status"]) != 4) {
  3549. throw new GeneralException("", "此订单不是待结算状态,请核查!");
  3550. }*/
  3551. if (!in_array(intval($workInfo["status"]), [2, 3, 4])) {
  3552. throw new GeneralException("", "此订单不是可结算状态,请核查!");
  3553. }
  3554. }
  3555. //-------------------------------------------------------
  3556. $platerMoney = round(floatval($workInfo["plat_fetchmoney"]), 2);
  3557. $sharerMoney = round(floatval($workInfo["sharer_fetchmoney"]), 2);
  3558. $workerMoney = round(floatval($workInfo["wker_salary"]), 2);
  3559. $sqlParam = array();
  3560. $sqlParam[":nowtime"] = time();
  3561. $sqlParam[":nowtime2"] = "[" . date("Y-m-d H:i:s", time()) . "] {$operatorName} ";
  3562. $sqlParam[":wkid"] = $workInfo["id"];
  3563. $sqlParam[":biz_roletype"] = ($handleMode == "paySettleByTrader2" ? 1 : 0);
  3564. $sqlParam[":biz_userid"] = intval($bizUser["id"]);
  3565. $sqlTemp = "";
  3566. //商家冻结费用解冻
  3567. $sqlTemp .= " insert into biz_trader_account ( `biz_traderid`, `createtime`,`type`, `money`, `status`, `biz_catalog`,`biz_id`, remark )";
  3568. $sqlTemp .= " select btr.biz_traderid, :nowtime , 0 , btr.feetotal, 1, 6 , tdwk.id, concat(:nowtime2,'工单结算时解冻工单费用\n') ";
  3569. $sqlTemp .= " from biz_todowork tdwk";
  3570. $sqlTemp .= " left join biz_trader_recruit btr on btr.id=tdwk.biz_recruitid ";
  3571. $sqlTemp .= " where tdwk.id=:wkid;";
  3572. //工单结算支出
  3573. $sqlParam[":biz_catalog1"] = ($handleMode == "paySettleByPlater" ? 7 : 6); //6-工单整体支出;7-平台代整体结算
  3574. $sqlTemp .= " insert into biz_trader_account ( `biz_traderid`, `createtime`,`type`, `money`, `status`, `biz_catalog`, `biz_id`, remark )";
  3575. $sqlTemp .= " select btr.biz_traderid, :nowtime , 1 , btr.feetotal, 1, :biz_catalog1 , tdwk.id, concat(:nowtime2,'工单结算时支出工单费用\n') ";
  3576. $sqlTemp .= " from biz_todowork tdwk";
  3577. $sqlTemp .= " left join biz_trader_recruit btr on btr.id=tdwk.biz_recruitid ";
  3578. $sqlTemp .= " where tdwk.id=:wkid;";
  3579. //------------------------------------
  3580. $share_workerid = intval($workInfo["share_workerid"]);
  3581. if ($share_workerid > 0) {
  3582. $platerMoney = $platerMoney - $sharerMoney;
  3583. }
  3584. $sqlParam[":platerMoney"] = $platerMoney; //平台分成
  3585. $sqlTemp .= " insert into biz_trader_account ( deleted, `biz_traderid`, `createtime`,`type`, `money`, `status`, `biz_catalog`, `biz_id`, remark )";
  3586. $sqlTemp .= " select 9, btr.biz_traderid , :nowtime , 1 , :platerMoney, 1, 1 , tdwk.id, concat(:nowtime2,'工单结算时平台分成\n') ";
  3587. $sqlTemp .= " from biz_todowork tdwk";
  3588. $sqlTemp .= " left join biz_trader_recruit btr on btr.id=tdwk.biz_recruitid ";
  3589. $sqlTemp .= " where tdwk.id=:wkid;";
  3590. if ($share_workerid > 0) { //分享佣金
  3591. $sqlParam[":sharerMoney"] = $sharerMoney;
  3592. $sqlParam[":share_workerid"] = $share_workerid;
  3593. $sqlTemp .= " insert into biz_trader_account ( deleted, `biz_traderid`, `createtime`,`type`, `money`, `status`, `biz_catalog`, `biz_id`, remark )";
  3594. $sqlTemp .= " select 9, btr.biz_traderid , :nowtime , 1 , :sharerMoney, 1, 2 , :wkid, concat(:nowtime2,'工单结算时佣金分成支出\n') ";
  3595. $sqlTemp .= " from biz_todowork tdwk";
  3596. $sqlTemp .= " left join biz_trader_recruit btr on btr.id=tdwk.biz_recruitid ";
  3597. $sqlTemp .= " where tdwk.id=:wkid;";
  3598. $sqlTemp .= " insert into biz_worker_account ( `biz_workerid`, `createtime`,`type`, `money`, `status`, `biz_catalog`,`biz_id`, remark )";
  3599. $sqlTemp .= " select :share_workerid , :nowtime , 0 , :sharerMoney, 1, 1 , :wkid, concat(:nowtime2,'工单结算时佣金分成收入\n') from dual where 1=1;";
  3600. }
  3601. $sqlParam[":workerMoney"] = $workerMoney; //工人工资
  3602. $sqlParam[":doed_workerid"] = intval($workInfo["biz_workerid"]);
  3603. $sqlTemp .= " insert into biz_trader_account ( deleted, `biz_traderid`, `createtime`,`type`, `money`, `status`, `biz_catalog`, `biz_id`, remark )";
  3604. $sqlTemp .= " select 9, btr.biz_traderid , :nowtime , 1 , :workerMoney, 1, 3 , :wkid, concat(:nowtime2,'工单结算时工资支出\n') ";
  3605. $sqlTemp .= " from biz_todowork tdwk";
  3606. $sqlTemp .= " left join biz_trader_recruit btr on btr.id=tdwk.biz_recruitid ";
  3607. $sqlTemp .= " where tdwk.id=:wkid;";
  3608. $sqlTemp .= " insert into biz_worker_account ( `biz_workerid`, `createtime`,`type`, `money`, `status`, `biz_catalog`,`biz_id`, remark )";
  3609. $sqlTemp .= " select :doed_workerid , :nowtime , 0 , :workerMoney, 1, 0 , :wkid, concat(:nowtime2,'工单结算时工资收入\n') from dual where 1=1;";
  3610. /*
  3611. //报名押金退还
  3612. $sqlTemp .= " insert into biz_worker_account ( `biz_workerid`, `createtime`,`type`, `money`, `status`, `biz_catalog`,`biz_id`, remark )";
  3613. $sqlTemp .= " select biz_workerid , :nowtime , 0 , enroll_premoney, 1, 7 , id, concat(:nowtime2,'工单结算时押金退还\n') ";
  3614. $sqlTemp .= " from biz_todowork where id=:wkid;";
  3615. //修正工单状态
  3616. $sqlTemp .= " update biz_todowork set updatetime=:nowtime,`status`=5 "; //已结算
  3617. $sqlTemp .= " ,settled_time=:nowtime,settled_mode=:biz_roletype,settled_userid=:biz_userid";
  3618. $sqlTemp .= " ,remark=concat(:nowtime2,'工单已结算\n',ifnull(remark,'')) where id=:wkid;";
  3619. */
  3620. //报名押金退还
  3621. $sqlTemp .= " insert into biz_worker_account ( `biz_workerid`, `createtime`,`type`, `money`, `status`, `biz_catalog`,`biz_id`, remark )";
  3622. $sqlTemp .= " select biz_workerid , :nowtime , 0 , enroll_premoney, 1, 7 , id, concat(:nowtime2,'工单结算时押金退还\n') ";
  3623. $sqlTemp .= " from biz_todowork where id=:wkid;";
  3624. //修正工单状态
  3625. $sqlTemp .= " update biz_todowork set updatetime=:nowtime,`status`=5 "; //已结算
  3626. $sqlTemp .= " ,settled_time=:nowtime,settled_mode=:biz_roletype,settled_userid=:biz_userid";
  3627. $sqlTemp .= " ,remark=concat(:nowtime2,'工单已结算\n',ifnull(remark,'')) where id=:wkid;";
  3628. $dataset = pdo_query3($sqlTemp, $sqlParam);
  3629. return true;
  3630. });
  3631. return $backdata;
  3632. break;
  3633. case "appraiseByWorker":
  3634. $workId = isset($ajaxdata["workid"]) ? $ajaxdata["workid"] : $GPC["workid"];
  3635. if (intval($workId) <= 0) {
  3636. throw new GeneralException("", "没有传递必要的teamid/workid参数或参数值不正确");
  3637. }
  3638. $workInfo = pdo_fetch("select tdwk.*,btr.biz_traderid
  3639. from biz_todowork tdwk
  3640. left join biz_trader_recruit btr on btr.id=tdwk.biz_recruitid
  3641. where tdwk.id=" . intval($workId));
  3642. if (empty($workInfo)) {
  3643. throw new GeneralException("", "订单id没有对应的记录,请核查!");
  3644. }
  3645. if (intval($workInfo["deleted"]) != 0) {
  3646. throw new GeneralException("", "信息已删除了,请核查后再处理!");
  3647. }
  3648. if (intval($workInfo["biz_workerid"]) != intval($bizWorker["id"])) {
  3649. throw new GeneralException("", "此订单记录不是您的,请核查后再处理!");
  3650. }
  3651. if (intval($workInfo["status"] != 5)) {
  3652. throw new GeneralException("", "不是已结算状态,不能进行评价!");
  3653. }
  3654. $appraiseLevel = isset($ajaxdata["appraiseLevel"]) ? $ajaxdata["appraiseLevel"] : $GPC["appraiseLevel"];
  3655. $appraiseRemark = isset($ajaxdata["appraiseRemark"]) ? $ajaxdata["appraiseRemark"] : $GPC["appraiseRemark"];
  3656. $sqlParam = array();
  3657. $sqlParam[":biz_catalog"] = 1; //0-会员对活动评价;1-会员对工作过程雇主评价;2-雇主商家对会员工作过程评价;
  3658. $sqlParam[":biz_id"] = intval($workInfo["id"]);
  3659. $appraisal = pdo_fetch("select * from biz_appraisal where biz_catalog=:biz_catalog and biz_id=:biz_id", $sqlParam);
  3660. if (!empty($appraisal)) {
  3661. throw new GeneralException("hasAppraised", "您已评价过,不能重复评价!");
  3662. }
  3663. $sqlParam[":fromerid"] = intval($workInfo["biz_workerid"]);
  3664. $sqlParam[":toerid"] = intval($workInfo["biz_traderid"]);
  3665. $sqlParam[":nowtime"] = time();
  3666. $sqlParam[":result_level"] = intval($appraiseLevel);
  3667. $sqlParam[":result_desc"] = trim($appraiseRemark);
  3668. $sqlParam[":remark"] = "[" . date("Y-m-d H:i:s", time()) . "] 会员对工作过程雇主评价\n";
  3669. $sqlTemp = "";
  3670. $sqlTemp .= " set @handle_id=0; ";
  3671. $sqlTemp .= " select @handle_id:=id from biz_appraisal where biz_catalog=:biz_catalog and biz_id=:biz_id limit 1;";
  3672. $sqlTemp .= " insert into biz_appraisal ( `createtime`,`biz_catalog`, biz_id, `fromerid`, `toerid`,`result_level`, result_desc, remark)";
  3673. $sqlTemp .= " select :nowtime, :biz_catalog,:biz_id, :fromerid, :toerid , :result_level,:result_desc,:remark from dual where ifnull(@handle_id,0)=0;";
  3674. $sqlTemp .= " update biz_appraisal set updatetime=:nowtime,fromerid=:fromerid,toerid=:toerid, `result_level`=:result_level, result_desc=:result_desc, remark=concat(:remark,remark) where ifnull(@handle_id,0)<>0 and id=ifnull(@handle_id,0);";
  3675. $backdata = pdo_query3($sqlTemp, $sqlParam);
  3676. return $backdata;
  3677. case "appraiseByTrader":
  3678. $workId = isset($ajaxdata["workid"]) ? $ajaxdata["workid"] : $GPC["workid"];
  3679. if (intval($workId) <= 0) {
  3680. throw new GeneralException("", "没有传递必要的teamid/workid参数或参数值不正确");
  3681. }
  3682. $workInfo = pdo_fetch("select tdwk.*,btr.biz_traderid
  3683. from biz_todowork tdwk
  3684. left join biz_trader_recruit btr on btr.id=tdwk.biz_recruitid
  3685. where tdwk.id=" . intval($workId));
  3686. if (empty($workInfo)) {
  3687. throw new GeneralException("", "订单id没有对应的记录,请核查!");
  3688. }
  3689. if (intval($workInfo["deleted"]) != 0) {
  3690. throw new GeneralException("", "信息已删除了,请核查后再处理!");
  3691. }
  3692. if (intval($workInfo["biz_traderid"]) != intval($bizTrader["id"])) {
  3693. throw new GeneralException("", "此订单记录不属于您发布的招聘,请核查后再处理!");
  3694. }
  3695. if (intval($workInfo["status"] != 5)) {
  3696. throw new GeneralException("", "不是已结算状态,不能进行评价!");
  3697. }
  3698. $appraiseLevel = isset($ajaxdata["appraiseLevel"]) ? $ajaxdata["appraiseLevel"] : $GPC["appraiseLevel"];
  3699. $appraiseRemark = isset($ajaxdata["appraiseRemark"]) ? $ajaxdata["appraiseRemark"] : $GPC["appraiseRemark"];
  3700. $sqlParam = array();
  3701. $sqlParam[":biz_catalog"] = 2; //0-会员对活动评价;1-会员对工作过程雇主评价;2-雇主商家对会员工作过程评价;
  3702. $sqlParam[":biz_id"] = intval($workInfo["id"]);
  3703. $appraisal = pdo_fetch("select * from biz_appraisal where biz_catalog=:biz_catalog and biz_id=:biz_id", $sqlParam);
  3704. if (!empty($appraisal)) {
  3705. throw new GeneralException("hasAppraised", "您已评价过,不能重复评价!");
  3706. }
  3707. $sqlParam[":fromerid"] = intval($workInfo["biz_traderid"]);
  3708. $sqlParam[":toerid"] = intval($workInfo["biz_workerid"]);
  3709. $sqlParam[":nowtime"] = time();
  3710. $sqlParam[":result_level"] = intval($appraiseLevel);
  3711. $sqlParam[":result_desc"] = trim($appraiseRemark);
  3712. $sqlParam[":remark"] = "[" . date("Y-m-d H:i:s", time()) . "] 雇主商家对会员工作过程评价\n";
  3713. $sqlTemp = "";
  3714. $sqlTemp .= " set @handle_id=0; ";
  3715. $sqlTemp .= " select @handle_id:=id from biz_appraisal where biz_catalog=:biz_catalog and biz_id=:biz_id limit 1;";
  3716. $sqlTemp .= " insert into biz_appraisal ( `createtime`,`biz_catalog`, biz_id, `fromerid`, `toerid`,`result_level`, result_desc, remark)";
  3717. $sqlTemp .= " select :nowtime, :biz_catalog,:biz_id, :fromerid, :toerid , :result_level,:result_desc,:remark from dual where ifnull(@handle_id,0)=0;";
  3718. $sqlTemp .= " update biz_appraisal set updatetime=:nowtime,fromerid=:fromerid,toerid=:toerid, `result_level`=:result_level, result_desc=:result_desc, remark=concat(:remark,remark) where ifnull(@handle_id,0)<>0 and id=ifnull(@handle_id,0);";
  3719. $backdata = pdo_query3($sqlTemp, $sqlParam);
  3720. return $backdata;
  3721. case "fetchWorkPayQRByWorker":
  3722. $workId = isset($ajaxdata["bizId"]) ? $ajaxdata["bizId"] : $GPC["bizId"];
  3723. if (intval($workId) <= 0) {
  3724. throw new GeneralException("", "没有传递必要的bizId参数或参数值不正确");
  3725. }
  3726. $workInfo = pdo_fetch("select tdwk.*,btr.biz_traderid
  3727. from biz_todowork tdwk
  3728. left join biz_trader_recruit btr on btr.id=tdwk.biz_recruitid
  3729. where tdwk.id=" . intval($workId));
  3730. if (empty($workInfo)) {
  3731. throw new GeneralException("", "订单id没有对应的记录,请核查!");
  3732. }
  3733. if (intval($workInfo["deleted"]) != 0) {
  3734. throw new GeneralException("", "信息已删除了,请核查后再处理!");
  3735. }
  3736. if (intval($workInfo["biz_workerid"]) != intval($bizWorker["id"])) {
  3737. throw new GeneralException("", "此订单记录不属于您的工单,请核查后再处理!");
  3738. }
  3739. if (intval($workInfo["status"] != 4)) {
  3740. throw new GeneralException("", "工单已不是待结算状态了!");
  3741. }
  3742. //-----------------------------------------------------
  3743. $payqr = WEB_URL_FILEROOT . "/SALARYPAY/PAYQR_" . intval($workId) . "_";
  3744. $phySavePath = WEB_PHY_FILEROOT . "/SALARYPAY/PAYQR_" . intval($workId) . "_";
  3745. $qrcatalog = 0; //0-普通二维码;1-小程序码;
  3746. switch ($qrcatalog) {
  3747. case 0:
  3748. $payqr .= "qr.png";
  3749. $phySavePath .= "qr.png";
  3750. require_once WEB_PHY_ROOT . "/base/lib_qr.php";
  3751. //$linkhref=WEBAPI_IMG_HOSTURL."/index.php?workid=".intval($item["id"]);
  3752. $linkhref = "workid=" . intval($workInfo["id"]);
  3753. lib_qrbuild2("png", $linkhref, $phySavePath, 200, 8);
  3754. break;
  3755. case 1:
  3756. $payqr .= "qrmina.png";
  3757. $phySavePath .= "qrmina.png";
  3758. require_once WEB_PHY_ROOT . "/base/wxsrv.php";
  3759. $wxParams = bizwx_fetchWxParams(SUBSYS_CAPITAL2_MINA); //谁扫用谁
  3760. $mina_appid = $wxParams["mina_appid"];
  3761. $mina_appSecret = $wxParams["mina_appSecret"];
  3762. $bizCatalog = 0;
  3763. $bizId = intval($workInfo["id"]);
  3764. $userId = intval($bizWorker["id"]);
  3765. weixin_getMinaQCode($mina_appid, $mina_appSecret, $phySavePath, $bizCatalog, $bizId, $userId, "pages/index/index");
  3766. break;
  3767. }
  3768. $sqlParam = array();
  3769. $sqlParam[":nowtime"] = time();
  3770. $sqlParam[":remark"] = "[" . date("Y-m-d H:i:s", time()) . "] 生成核销码 \n";
  3771. $sqlParam[":wkid"] = intval($workInfo["id"]);
  3772. $sqlParam[":payqr"] = $payqr;
  3773. //paycode
  3774. $padLength = (6 - mb_strlen(intval($workInfo["id"]) . ""));
  3775. $padPrefix = "";
  3776. for ($iii = 1; $iii <= $padLength; $iii++) {
  3777. $padPrefix .= ($iii == 1 ? "A" : "0");
  3778. }
  3779. $sqlParam[":paycode"] = $padPrefix . intval($workInfo["id"]);
  3780. $sqlTemp = "";
  3781. $sqlTemp .= " update biz_todowork set updatetime=:nowtime, remark=concat(:remark,ifnull(remark,''))";
  3782. $sqlTemp .= " ,`payqr`=:payqr ,`paycode`=:paycode ";
  3783. $sqlTemp .= " where id=:wkid;";
  3784. $backdata = pdo_query3($sqlTemp, $sqlParam);
  3785. return array("payqr" => $payqr, "paycode" => $sqlParam[":paycode"]);
  3786. break;
  3787. default:
  3788. throw new GeneralException("", "不支持的handleMode!");
  3789. }
  3790. }
  3791. function bizbase_todoWorkPayCore($prePayArgs, $bizArgs)
  3792. {
  3793. require_once WEB_PHY_ROOT . "/base/wxsrv.php";
  3794. $prePayInfo = weixin_prepayBuildV3($prePayArgs, $bizArgs, function ($bizCatalog, $bizId, $bizArgs) {
  3795. $minaCode = $bizArgs["minaCode"];
  3796. $bizInfo = $bizArgs["bizInfo"];
  3797. $handleMode = $bizArgs["handleMode"];
  3798. $bizUser = $bizArgs["bizUser"];
  3799. $wxmina_appid = $bizArgs["wxmina_appid"];
  3800. $wxmina_openid = $bizArgs["wxmina_openid"];
  3801. //---------------------------------------
  3802. $payTotal = round(floatval($bizInfo["money"]), 2);
  3803. if ($payTotal <= 0) {
  3804. throw new GeneralException("", "购买金额竟然小于等于0");
  3805. }
  3806. $payTotal = $payTotal * 100; //转为分
  3807. //---------------------------------------
  3808. $sqlParam = array();
  3809. $sqlParam[":id"] = intval($bizInfo["id"]);
  3810. $sqlParam[":wxmina_appid"] = $wxmina_appid;
  3811. $sqlParam[":wxmina_openid"] = $wxmina_openid;
  3812. $outtradeno = substr(date('YmdHiis') . md5(uniqid()), 0, 32);
  3813. $sqlParam[":outtradeno"] = $outtradeno;
  3814. $sqlTemp = " update biz_trader_account set";
  3815. $sqlTemp .= " wxmina_appid=:wxmina_appid,wxmina_openid=:wxmina_openid,weixin_outtradeno=:outtradeno";
  3816. $sqlTemp .= " where id=:id; ";
  3817. $dataset = pdo_query3($sqlTemp, $sqlParam);
  3818. //---------------------------------------
  3819. $prePayInfo = array();
  3820. $prePayInfo["appid"] = $wxmina_appid;
  3821. $prePayInfo["mchId"] = WeiXinPay_mchId;
  3822. $prePayInfo["mch_paykeyV2"] = WeiXinPay_apiKey;
  3823. $prePayInfo["mch_paykeyV3"] = WeiXinPay_apiKeyV3;
  3824. $prePayInfo["out_trade_no"] = $outtradeno;
  3825. //$prePayInfo["out_trade_no"] = $bizInfo["biz_idtag"];
  3826. $prePayInfo["total"] = "{$payTotal}";
  3827. $prePayInfo["description"] = "订单支付业务";
  3828. $prePayInfo["openid"] = $wxmina_openid;
  3829. return $prePayInfo;
  3830. });
  3831. return $prePayInfo;
  3832. }
  3833. function bizbase_todoWorkEnrollVerify($handleMode, $bizWorker, $recruitInfo, $planDotime, $nowWorkId = 0, $teamid = 0)
  3834. {
  3835. $logcommon = "handleMode=>" . $handleMode . " recruitInfoId=>" . $recruitInfo["id"] . " bizWorkerId=>" . $bizWorker["id"] . " planDotime=>" . $planDotime . " nowWorkId=>" . $nowWorkId;
  3836. //招聘记录状态检测
  3837. if (intval($recruitInfo["status"]) != 2) {
  3838. eeglobal_log_handler("bizbase_todoWorkEnrollVerify", "debug", "招聘已不是可报名状态 {$logcommon} ");
  3839. if (intval($teamid) > 0) {
  3840. $sqlParam = array();
  3841. $sqlParam[":nowtime"] = time();
  3842. $sqlParam[":teamid"] = intval($teamid);
  3843. $sqlParam[":remark"] = "[" . date("Y-m-d H:i:s", time()) . "] 招聘已不可报名,团组解散 \n";
  3844. $sqlTemp = "";
  3845. $sqlTemp .= " update biz_todoworkteam set updatetime=:nowtime";
  3846. $sqlTemp .= " , `status`=2, remark=:remark";
  3847. $sqlTemp .= " where id=:teamid;";
  3848. $sqlTemp .= " update biz_todowork set updatetime=:nowtime ";
  3849. $sqlTemp .= " , `teamstatus`=-3, teamremark=:remark";
  3850. $sqlTemp .= " , `status`=-2, remark=:remark ";
  3851. $sqlTemp .= " where workteamid=:teamid and `teamstatus`>=0 ";
  3852. $backdata = pdo_query3($sqlTemp, $sqlParam);
  3853. }
  3854. throw new GeneralException("", "非常抱歉,招聘已不可报名!");
  3855. }
  3856. //性别限制逻辑 0-不限;1-限男;2-限女
  3857. switch (intval($recruitInfo["gender_mode"])) {
  3858. case 1:
  3859. if (intval($bizWorker["gender"]) > 0) {
  3860. eeglobal_log_handler("bizbase_todoWorkEnrollVerify", "debug", "招聘限制男,但不是男 {$logcommon} ");
  3861. if ($handleMode == "teamEnroll") {
  3862. return false;
  3863. }
  3864. throw new GeneralException("hasEnrolled", "非常抱歉,此招聘限制性别为男!");
  3865. }
  3866. if (intval($bizWorker["gender"]) < 0) {
  3867. eeglobal_log_handler("bizbase_todoWorkEnrollVerify", "debug", "招聘限制男,但不是男 {$logcommon} ");
  3868. if ($handleMode == "teamEnroll") {
  3869. return false;
  3870. }
  3871. throw new GeneralException("hasEnrolled", "非常抱歉,此招聘限制性别为男,请完善信息后再报名!");
  3872. }
  3873. break;
  3874. case 2:
  3875. if (intval($bizWorker["gender"]) == 0) {
  3876. eeglobal_log_handler("bizbase_todoWorkEnrollVerify", "debug", "招聘限制女,但不是女 {$logcommon} ");
  3877. if ($handleMode == "teamEnroll") {
  3878. return false;
  3879. }
  3880. throw new GeneralException("hasEnrolled", "非常抱歉,此招聘限制性别为女!");
  3881. }
  3882. if (intval($bizWorker["gender"]) < 0) {
  3883. eeglobal_log_handler("bizbase_todoWorkEnrollVerify", "debug", "招聘限制女,但不是女 {$logcommon} ");
  3884. if ($handleMode == "teamEnroll") {
  3885. return false;
  3886. }
  3887. throw new GeneralException("hasEnrolled", "非常抱歉,此招聘限制性别为女,请完善信息后再报名!");
  3888. }
  3889. break;
  3890. }
  3891. //年龄限制逻辑
  3892. if (intval($recruitInfo["age_mode"]) > 0) {
  3893. $age_min = intval($recruitInfo["age_min"]);
  3894. $age_max = intval($recruitInfo["age_max"]);
  3895. $age = 0;
  3896. if (intval($bizWorker["birthday"]) > 0) {
  3897. $birthdate = date("Ymd", $bizWorker["birthday"]);
  3898. $datetime1 = date_create_from_format("Ymd", $birthdate);
  3899. $datetime1 = new \DateTime(date("Y-m-d", date_timestamp_get($datetime1)));
  3900. $datetime2 = new \DateTime(date("Y-m-d", time()));
  3901. $interval = $datetime1->diff($datetime2);
  3902. $age = intval($interval->format('%Y'));
  3903. }
  3904. if ($age > 0) {
  3905. if ($age < $age_min) {
  3906. eeglobal_log_handler("bizbase_todoWorkEnrollVerify", "debug", "招聘限制年龄,小于最小年龄要求 {$logcommon} ");
  3907. if ($handleMode == "teamEnroll") {
  3908. return false;
  3909. }
  3910. throw new GeneralException("hasEnrolled", "非常抱歉,您的年龄({$age}岁)小于此招聘要求的最小年龄({$age_min}岁)要求,无法报名!");
  3911. }
  3912. if ($age > $age_max) {
  3913. eeglobal_log_handler("bizbase_todoWorkEnrollVerify", "debug", "招聘限制年龄,大于最大年龄要求 {$logcommon} ");
  3914. if ($handleMode == "teamEnroll") {
  3915. return false;
  3916. }
  3917. throw new GeneralException("hasEnrolled", "非常抱歉,您的年龄({$age}岁)大于此招聘要求的最大年龄({$age_min}岁)要求,无法报名!");
  3918. }
  3919. }
  3920. }
  3921. $oldList = pdo_fetch("select * from biz_todowork
  3922. where id<>:nowWorkId and biz_recruitid=:biz_recruitid and biz_workerid=:biz_workerid and !find_in_set(ifnull(`status`,0),:status) ", array(
  3923. ":nowWorkId" => intval($nowWorkId),
  3924. ":biz_recruitid" => $recruitInfo["id"],
  3925. ":biz_workerid" => $bizWorker["id"],
  3926. ":status" => "-2,-3,-4,0", //主动取消/被违约/被动取消后都可再报
  3927. ));
  3928. if (!empty($oldList)) {
  3929. eeglobal_log_handler("bizbase_todoWorkEnrollVerify", "debug", "您已成功报名过此招聘或已被驳回,不能重复报名此招聘 {$logcommon} ");
  3930. if ($handleMode == "teamEnroll") {
  3931. return false;
  3932. }
  3933. throw new GeneralException("hasEnrolled", "您已成功报名过此招聘或已被驳回,不能重复报名此招聘,请核查!");
  3934. }
  3935. $workDateStart = intval($recruitInfo["begin_datetime"]);
  3936. $workDateFinish = $workDateStart;
  3937. if (
  3938. intval($recruitInfo["settle_catalog"]) <= 0 //普通招聘的多日招聘
  3939. && intval($recruitInfo["begin_datetime"]) < intval($recruitInfo["finish_datetime"])
  3940. ) {
  3941. $workDateFinish = intval($recruitInfo["finish_datetime"]);
  3942. }
  3943. if (intval($recruitInfo["settle_catalog"]) > 0) {
  3944. $workDateStart = strtotime(date("Y-m-d", $planDotime));
  3945. $workDateFinish = strtotime(date("Y-m-d 23:59:59", $planDotime));
  3946. }
  3947. // if(($workDateStart+intval($recruitInfo["begin_hour2"]))<=time()+3600*2)
  3948. if (($workDateStart + intval($recruitInfo["begin_hour2"])) <= time()) {
  3949. throw new GeneralException("overdue", "已过招聘可报名时间,不能再报名!");
  3950. }
  3951. $oldList = pdo_fetch("select tdwk.* from biz_todowork tdwk
  3952. left join biz_trader_recruit btr on btr.id=tdwk.biz_recruitid
  3953. left join biz_todoworkteam tdwkt on tdwkt.id=tdwk.workteamid
  3954. where tdwk.id<>:nowWorkId and tdwk.biz_workerid=:biz_workerid and ifnull(tdwk.`status`,0)>=2 and ifnull(tdwk.`status`,0)!=5
  3955. and(
  3956. (tdwk.todo_begindate>=:plandoDateStart and tdwk.todo_begindate<=:plandoDateFinish)
  3957. or(:nowSettleCatalog=0 and tdwk.todo_begindate>=:workDateStart and tdwk.todo_begindate<=:workDateFinish)
  3958. or( btr.settle_catalog<=0 and btr.finish_datetime>btr.begin_datetime and (
  3959. (btr.begin_datetime>=:workDateStart and btr.begin_datetime<=:workDateFinish)
  3960. or(btr.begin_datetime<=:workDateStart and btr.finish_datetime>=:workDateFinish)
  3961. or(btr.finish_datetime>=:workDateStart and btr.finish_datetime<=:workDateFinish)
  3962. ))
  3963. )", array(
  3964. ":nowWorkId" => intval($nowWorkId),
  3965. ":biz_workerid" => $bizWorker["id"],
  3966. ":nowSettleCatalog" => intval($recruitInfo["settle_catalog"]),
  3967. ":plandoDateStart" => strtotime(date("Y-m-d", $planDotime)),
  3968. ":plandoDateFinish" => strtotime(date("Y-m-d 23:59:59", $planDotime)),
  3969. ":workDateStart" => $workDateStart,
  3970. ":workDateFinish" => $workDateFinish,
  3971. ));
  3972. //urgent_level 为1 则为今日零工 今日零工取消限制
  3973. if (1 != $recruitInfo['urgent_level']) {
  3974. if (!empty($oldList)) {
  3975. eeglobal_log_handler("bizbase_todoWorkEnrollVerify", "debug", "您已成功报名此日期(段)的招聘,同一天不能报名多个招聘 {$logcommon} ");
  3976. if ($handleMode == "teamEnroll") {
  3977. return false;
  3978. }
  3979. throw new GeneralException("hasDateEnrolled", "您已成功报名此日期(段)的招聘,同一天不能报名多个招聘,请核查!");
  3980. }
  3981. if (intval($recruitInfo["enroll_audit"]) > 0 || $handleMode == "openTeam" || $handleMode == "joinTeam") { //需要报名审核/开参团模式
  3982. $oldList = pdo_fetchall("select tdwk.* from biz_todowork tdwk
  3983. left join biz_trader_recruit btr on btr.id=tdwk.biz_recruitid
  3984. left join biz_todoworkteam tdwkt on tdwkt.id=tdwk.workteamid
  3985. where tdwk.id<>:nowWorkId and tdwk.biz_workerid=:biz_workerid and ( (tdwk.`workteam_mode`<=0 and tdwk.`status`=1) or (tdwk.`workteam_mode`>0 and tdwk.`teamstatus`>=2 and tdwkt.`status`=3) )
  3986. and(
  3987. (tdwk.todo_begindate>=:plandoDateStart and tdwk.todo_begindate<=:plandoDateFinish)
  3988. or(:nowSettleCatalog=0 and tdwk.todo_begindate>=:workDateStart and tdwk.todo_begindate<=:workDateFinish)
  3989. or( btr.settle_catalog<=0 and btr.finish_datetime>btr.begin_datetime and (
  3990. (btr.begin_datetime>=:workDateStart and btr.begin_datetime<=:workDateFinish)
  3991. or(btr.begin_datetime<=:workDateStart and btr.finish_datetime>=:workDateFinish)
  3992. or(btr.finish_datetime>=:workDateStart and btr.finish_datetime<=:workDateFinish)
  3993. ))
  3994. )", array(
  3995. ":nowWorkId" => intval($nowWorkId),
  3996. ":biz_workerid" => $bizWorker["id"],
  3997. ":nowSettleCatalog" => intval($recruitInfo["settle_catalog"]),
  3998. ":plandoDateStart" => strtotime(date("Y-m-d", $planDotime)),
  3999. ":plandoDateFinish" => strtotime(date("Y-m-d 23:59:59", $planDotime)),
  4000. ":workDateStart" => $workDateStart,
  4001. ":workDateFinish" => $workDateFinish,
  4002. ));
  4003. if (count($oldList) >= 3) {
  4004. eeglobal_log_handler("bizbase_todoWorkEnrollVerify", "debug", "您报名此日期(段)的待录用招聘数量已达最大3个的限制 {$logcommon} ");
  4005. if ($handleMode == "teamEnroll") {
  4006. return false;
  4007. }
  4008. throw new GeneralException("hasDateQueue", "您报名此日期(段)的待录用招聘数量已达最大3个的限制,请核查!");
  4009. }
  4010. }
  4011. }
  4012. if ($handleMode == "openTeam" || $handleMode == "joinTeam") {
  4013. $oldList = pdo_fetch("select * from biz_todoworkteam where biz_recruitid=:biz_recruitid and leader_workerid=:leader_workerid and !find_in_set(ifnull(`status`,0),:status) ", array(
  4014. ":biz_recruitid" => $recruitInfo["id"],
  4015. ":leader_workerid" => $bizWorker["id"],
  4016. ":status" => "0,2,6", //解散/被违约
  4017. ));
  4018. if (!empty($oldList)) {
  4019. eeglobal_log_handler("bizbase_todoWorkEnrollVerify", "debug", "您已对此招聘开团了,不能重复开参团 {$logcommon} ");
  4020. throw new GeneralException("hasOpenTeam", "您已对此招聘开团了,不能重复开参团,请核查!");
  4021. }
  4022. $oldList = pdo_fetch("select tdwk.* from biz_todowork tdwk
  4023. left join biz_todoworkteam tdwkt on tdwkt.id=tdwk.workteamid
  4024. where tdwk.biz_recruitid=:biz_recruitid and tdwk.biz_workerid=:biz_workerid
  4025. and tdwk.workteam_mode>0 and tdwk.teamstatus>=1
  4026. and !find_in_set(ifnull(tdwkt.`status`,0),:status) ", array(
  4027. ":biz_recruitid" => $recruitInfo["id"],
  4028. ":biz_workerid" => $bizWorker["id"],
  4029. ":status" => "0,2,6", //解散/被违约
  4030. ));
  4031. if (!empty($oldList)) {
  4032. eeglobal_log_handler("bizbase_todoWorkEnrollVerify", "debug", "您已报名过此招聘的团组,不能重复开参团 {$logcommon} ");
  4033. throw new GeneralException("hasJoinTeam", "您已报名过此招聘的团组,不能重复开参团,请核查!");
  4034. }
  4035. }
  4036. return true;
  4037. }
  4038. function bizbase_todoWorkTeamStatusName($statusCode)
  4039. {
  4040. switch (intval($statusCode)) {
  4041. case 0:
  4042. $statusName = "待成团";
  4043. break;
  4044. case 1:
  4045. $statusName = "已成团待提交报名";
  4046. break;
  4047. case 2:
  4048. $statusName = "已解散";
  4049. break;
  4050. case 3:
  4051. $statusName = "已报名待审核";
  4052. break;
  4053. case 4:
  4054. $statusName = "报名已审核通过";
  4055. break;
  4056. case 5:
  4057. $statusName = "报名被驳回";
  4058. break;
  4059. case 6:
  4060. $statusName = "被违约";
  4061. break;
  4062. case 7:
  4063. $statusName = "主动取消报名";
  4064. break;
  4065. case 8:
  4066. $statusName = "被动取消报名";
  4067. break;
  4068. }
  4069. return $statusName;
  4070. }
  4071. function bizbase_todoWorkSubTeamStatusName($statusCode)
  4072. {
  4073. switch (intval($statusCode)) {
  4074. case 0: //0-待参团;1-已提交参团;2-已入团;-1-参团被驳回;-2-参团被踢出;-3-已解散;-4-被动取消;
  4075. $statusName = "待参团";
  4076. break;
  4077. case 1:
  4078. $statusName = "已提交参团";
  4079. break;
  4080. case 2:
  4081. $statusName = "已入团";
  4082. break;
  4083. case -1:
  4084. $statusName = "参团被驳回";
  4085. break;
  4086. case -2:
  4087. $statusName = "参团被踢出";
  4088. break;
  4089. case -3:
  4090. $statusName = "已解散";
  4091. break;
  4092. case -4:
  4093. $statusName = "被动取消";
  4094. break;
  4095. }
  4096. return $statusName;
  4097. }
  4098. function bizbase_todoWorkTeamRoleName($mode)
  4099. {
  4100. switch (intval($mode)) {
  4101. case 0:
  4102. $roleName = "单干";
  4103. break;
  4104. case 1:
  4105. $roleName = "开团";
  4106. break;
  4107. case 2:
  4108. $roleName = "参团";
  4109. break;
  4110. }
  4111. return $roleName;
  4112. }
  4113. function bizbase_todoWorkStatusName($statusCode)
  4114. {
  4115. switch (intval($statusCode)) {
  4116. case 0:
  4117. $statusName = "已下单待付押金";
  4118. break;
  4119. case 1:
  4120. $statusName = "已报名待录用";
  4121. break;
  4122. case 2:
  4123. $statusName = "已录用待开工";
  4124. break;
  4125. case -1:
  4126. $statusName = "报名被驳回";
  4127. break;
  4128. case 3:
  4129. $statusName = "已开始工作";
  4130. break;
  4131. case 4:
  4132. $statusName = "已结束工作待结算";
  4133. break;
  4134. case 5:
  4135. $statusName = "已结算";
  4136. break;
  4137. case 90:
  4138. $statusName = "拒绝支付待审核";
  4139. break;
  4140. case -2:
  4141. $statusName = "取消报名";
  4142. break;
  4143. case -3:
  4144. $statusName = "被违约";
  4145. break;
  4146. case -4:
  4147. $statusName = "被动取消";
  4148. break;
  4149. case -5:
  4150. $statusName = "拒绝支付";
  4151. break;
  4152. case -6:
  4153. $statusName = "未开始工作";
  4154. break;
  4155. case -7:
  4156. $statusName = "未结束工作";
  4157. break;
  4158. case -8:
  4159. $statusName = "超48小时未结算";
  4160. break;
  4161. }
  4162. return $statusName;
  4163. }
  4164. function bizbase_todoWorkAboutQuery($fromSubSystem, $baseUser, $bizUser, $handleMode, $pageIndex, $pageSize, $ajaxdata, $GPC)
  4165. {
  4166. if (intval($baseUser["subsystem"]) == SUBSYS_LABOUR_MINA) {
  4167. $bizWorker = $bizUser;
  4168. }
  4169. if (intval($baseUser["subsystem"]) == SUBSYS_CAPITAL_MINA) {
  4170. $bizTrader = $bizUser;
  4171. }
  4172. if (intval($baseUser["subsystem"]) == SUBSYS_CAPITAL2_MINA) {
  4173. $bizTrader2 = $bizUser;
  4174. }
  4175. switch ($handleMode) {
  4176. case "fetchallRecuritNew":
  4177. $all = input_getPostObj();
  4178. if (!$all['status'] || $all['status'] == 0 || $all['status'] > 3) {
  4179. throw new GeneralException("", "status参数错误!");
  4180. }
  4181. $status = $all['status'];
  4182. $start = (intval($pageIndex) - 1) * $pageSize;
  4183. // if status=1 查看招聘,条件:没有开始的任务根据开始时间和时间进行判断
  4184. $sql = "";
  4185. //where发布人
  4186. // if($status == 1){
  4187. // //where发布人
  4188. // $sql_select = "SELECT t.*,FROM_UNIXTIME(t.begin_datetime,\"%Y-%m-%d\") as begin_datetime_bright,FROM_UNIXTIME(t.finish_datetime,\"%Y-%m-%d\") as finish_datetime_bright";
  4189. // // 1数据库里面begin_datetime开始时间(年月日)转成20201011格式
  4190. // // 2begin_hour开工时间 11:00转换 1100
  4191. // // 3将两个字段拼接成一个
  4192. // $sql .=" FROM (SELECT *, CONCAT(FROM_UNIXTIME(begin_datetime,\"%Y%m%d\"), REPLACE(begin_hour,':','')) AS begin_time_new FROM biz_trader_recruit WHERE biz_traderid={$baseUser['biz_userid']}) t ";
  4193. // $sql .= " where t.begin_time_new > ".date('YmdHi',time());
  4194. // $sql .= " AND t.status != -2";
  4195. // $sql .= " ORDER BY id DESC";
  4196. // $sql .= " limit {$start},{$pageSize}";
  4197. // $list = pdo_fetchall($sql_select.$sql, array());
  4198. //
  4199. // }elseif($status == 2){
  4200. // $sql_select = "SELECT t.*,FROM_UNIXTIME(t.begin_datetime,\"%Y-%m-%d\") as begin_datetime_bright,FROM_UNIXTIME(t.finish_datetime,\"%Y-%m-%d\") as finish_datetime_bright,tdwk.status as biz_todowork_status";
  4201. // $sql .=" FROM (SELECT *, CONCAT(FROM_UNIXTIME(begin_datetime,\"%Y%m%d\"), REPLACE(begin_hour,':','')) AS begin_time_new FROM biz_trader_recruit WHERE biz_traderid={$baseUser['biz_userid']}) t ";
  4202. // $sql .= "left join biz_todowork tdwk on t.id=tdwk.biz_recruitid ";
  4203. // $sql .= " where t.begin_time_new < ".date('YmdHi',time());
  4204. // $sql .= " AND t.status != -2";
  4205. // $sql .= " AND tdwk.status IN (2,3,4,90)";
  4206. // $sql .= " ORDER BY id DESC";
  4207. // $sql .= " limit {$start},{$pageSize}";
  4208. // $list = pdo_fetchall($sql_select.$sql, array());
  4209. // }elseif ($status == 3){
  4210. // $sql_select = "SELECT t.*,FROM_UNIXTIME(t.begin_datetime,\"%Y-%m-%d\") as begin_datetime_bright,FROM_UNIXTIME(t.finish_datetime,\"%Y-%m-%d\") as finish_datetime_bright";
  4211. // $sql .=" FROM (SELECT *, CONCAT(FROM_UNIXTIME(begin_datetime,\"%Y%m%d\"), REPLACE(begin_hour,':','')) AS begin_time_new FROM biz_trader_recruit WHERE biz_traderid={$baseUser['biz_userid']}) t ";
  4212. //// $sql .= "left join biz_todowork tdwk on t.id=tdwk.biz_recruitid ";
  4213. //// $sql .= " AND tdwk.status NOT IN (2,3,4,90)";
  4214. // $sql .= " where t.begin_time_new < ".date('YmdHi',time());
  4215. // $sql .= " OR t.status = -2";
  4216. // $sql .= " ORDER BY id DESC";
  4217. // $sql .= " limit {$start},{$pageSize}";
  4218. // $list = pdo_fetchall($sql_select.$sql, array());
  4219. // }
  4220. if ($status == 1) {
  4221. //where发布人
  4222. $sql_select = "SELECT * FROM biz_trader_recruit WHERE biz_traderid={$baseUser['biz_userid']} ";
  4223. $sql .= " AND status = 2 AND is_delete = 0 ";
  4224. $sql .= " ORDER BY id DESC";
  4225. $sql .= " limit {$start},{$pageSize}";
  4226. $list = pdo_fetchall($sql_select . $sql, array());
  4227. } elseif ($status == 2) {
  4228. $sql_select = "SELECT t.* FROM ( SELECT *,( SELECT count(*) FROM biz_todowork WHERE biz_todowork.biz_recruitid = biz_trader_recruit.id AND status IN (2,3,4,90,-8,-7,-6) ) AS biz_todowork_count FROM biz_trader_recruit WHERE biz_traderid = {$baseUser['biz_userid']} ) t ";
  4229. $sql .= " WHERE t.biz_todowork_count >= 1 AND t.is_delete = 0 ";
  4230. $sql .= " ORDER BY id DESC";
  4231. $sql .= " limit {$start},{$pageSize}";
  4232. $list = pdo_fetchall($sql_select . $sql, array());
  4233. } elseif ($status == 3) {
  4234. $sql_select = "SELECT t.* FROM ( SELECT *,( SELECT count(*) FROM biz_todowork WHERE biz_todowork.biz_recruitid = biz_trader_recruit.id AND status NOT IN (2,3,4,90,-8,-7,-6) ) AS biz_todowork_count FROM biz_trader_recruit WHERE biz_traderid = {$baseUser['biz_userid']} ) t ";
  4235. $sql .= " WHERE t.biz_todowork_count >= 0 AND t.is_delete = 0 ";
  4236. $sql .= " AND t.status != 2";
  4237. $sql .= " ORDER BY id DESC";
  4238. $sql .= " limit {$start},{$pageSize}";
  4239. $list = pdo_fetchall($sql_select . $sql, array());
  4240. }
  4241. foreach ($list as $k => $v) {
  4242. $list[$k]['begin_datetime_bright'] = date('Y-m-d', $v['begin_datetime']);
  4243. $list[$k]['finish_datetime_bright'] = date('Y-m-d', $v['finish_datetime']);
  4244. // 已录用的数量
  4245. $accepted_ok_sql = "SELECT COUNT(*) as count FROM biz_todowork where biz_recruitid = {$v['id']} AND status = 2";
  4246. $list[$k]['accepted_ok'] = pdo_fetch($accepted_ok_sql, array())['count'];
  4247. // 待录用
  4248. $accepted_no_sql = "SELECT COUNT(*) as count FROM biz_todowork where biz_recruitid = {$v['id']} AND status = 1";
  4249. $list[$k]['accepted_no'] = pdo_fetch($accepted_no_sql, array())['count'];
  4250. // 已开始
  4251. $status_three = "SELECT COUNT(*) as count FROM biz_todowork where biz_recruitid = {$v['id']} AND status = 3";
  4252. $list[$k]['todowork_status_three'] = pdo_fetch($status_three, array())['count'];
  4253. // 待结算
  4254. $status_four = "SELECT COUNT(*) as count FROM biz_todowork where biz_recruitid = {$v['id']} AND status in (2,3,4)";
  4255. $list[$k]['todowork_status_four'] = pdo_fetch($status_four, array())['count'];
  4256. // 已结算
  4257. $status_five = "SELECT COUNT(*) as count FROM biz_todowork where biz_recruitid = {$v['id']} AND status = 5";
  4258. $list[$k]['todowork_status_five'] = pdo_fetch($status_five, array())['count'];
  4259. $bizId = $v['id'];
  4260. $sql = "select bw.id,bw.profile_photo from biz_trader_recruit as btr
  4261. join biz_todowork as bt on btr.id=bt.biz_recruitid and bt.`status`>=1
  4262. join biz_worker as bw on bw.id =bt.biz_workerid
  4263. where btr.id=:btrid limit 3";
  4264. $list[$k]['todo_list'] = pdo_fetchall($sql, array(
  4265. ":btrid" => intval($bizId),
  4266. ));
  4267. }
  4268. // 发布招聘的条数
  4269. // $sql_one=" FROM (SELECT *, CONCAT(FROM_UNIXTIME(begin_datetime,\"%Y%m%d\"), REPLACE(begin_hour,':','')) AS begin_time_new FROM biz_trader_recruit WHERE biz_traderid={$baseUser['biz_userid']}) t ";
  4270. // $sql_one .= " where t.begin_time_new > ".date('YmdHi',time());
  4271. // $sql_one .= " AND t.status != -2";
  4272. /*$sql_one = " FROM biz_trader_recruit WHERE biz_traderid={$baseUser['biz_userid']} AND status = 2 AND is_delete = 0 ";
  4273. $count_one = "select count(*) as count " . $sql_one . ";";
  4274. $sumDataOne = pdo_fetch($count_one, array());*/
  4275. $sql_one = "select count(*) as count from biz_todowork as bit join biz_trader_recruit as btr on btr.id = bit.biz_recruitid where bit.`status`=1 and btr.`status`=2 and btr.biz_traderid = '{$baseUser['biz_userid']}' ";
  4276. $sumDataOne = pdo_fetch($sql_one);
  4277. // 查看工作的条数
  4278. // $sql_two=" FROM (SELECT *, CONCAT(FROM_UNIXTIME(begin_datetime,\"%Y%m%d\"), REPLACE(begin_hour,':','')) AS begin_time_new FROM biz_trader_recruit WHERE biz_traderid={$baseUser['biz_userid']}) t ";
  4279. // $sql_two .= "left join biz_todowork tdwk on t.id=tdwk.biz_recruitid ";
  4280. // $sql_two .= " where t.begin_time_new < ".date('YmdHi',time());
  4281. // $sql_two .= " AND t.status != -2";
  4282. // $sql_two .= " AND tdwk.status IN (2,3,4,90)";
  4283. // $count_two = "select count(*) as count ".$sql_two.";";
  4284. $count_two = "SELECT COUNT(*) as count FROM ( SELECT *,( SELECT count(*) FROM biz_todowork WHERE biz_todowork.biz_recruitid = biz_trader_recruit.id AND status IN (2,3,4,90,-8,-7,-6) ) AS biz_todowork_count FROM biz_trader_recruit WHERE biz_traderid = {$baseUser['biz_userid']} ) t WHERE t.biz_todowork_count >= 1 AND t.is_delete = 0 ";
  4285. $sumDataTwo = pdo_fetch($count_two, array());
  4286. // 历史发布
  4287. // $sql_three=" FROM (SELECT *, CONCAT(FROM_UNIXTIME(begin_datetime,\"%Y%m%d\"), REPLACE(begin_hour,':','')) AS begin_time_new FROM biz_trader_recruit WHERE biz_traderid={$baseUser['biz_userid']}) t ";
  4288. // $sql_three .= " where t.begin_time_new < ".date('YmdHi',time());
  4289. // $sql_three .= " OR t.status = -2";
  4290. // $count_three = "select count(*) as count ".$sql_three.";";
  4291. $count_three = "SELECT COUNT(*) as count FROM ( SELECT *,( SELECT count(*) FROM biz_todowork WHERE biz_todowork.biz_recruitid = biz_trader_recruit.id AND status NOT IN (2,3,4,90,-8,-7,-6) ) AS biz_todowork_count FROM biz_trader_recruit WHERE biz_traderid = {$baseUser['biz_userid']} ) t ";
  4292. $count_three .= " WHERE t.biz_todowork_count >= 0 AND t.is_delete = 0 ";
  4293. $count_three .= " AND t.status != 2";
  4294. $sumDataThree = pdo_fetch($count_three, array());
  4295. return array(
  4296. "pageData" => $list,
  4297. "count_one" => intval($sumDataOne["count"]),
  4298. "count_two" => intval($sumDataTwo["count"]),
  4299. "count_three" => intval($sumDataThree["count"]),
  4300. );
  4301. break;
  4302. case "fetchallTeamByPlater":
  4303. case "fetchallTeamByTrader":
  4304. case "fetchallTeamByWorker":
  4305. $sqlParam = array();
  4306. //查询处理
  4307. $query = isset($ajaxdata["query"]) ? $ajaxdata["query"] : $GPC["query"];
  4308. if (empty($query) && !is_array($query)) { //验证一下query信息集
  4309. $query = " and 1=1 ";
  4310. } else {
  4311. $queryNew = " and 1=1 ";
  4312. foreach ($query as $fdName => $fdValue) {
  4313. if (empty($fdName) || empty($fdValue)) {
  4314. continue;
  4315. }
  4316. switch ($fdName) {
  4317. case "title":
  4318. if (empty(trim($fdValue))) {
  4319. continue;
  4320. }
  4321. $paramName = ":qy_title";
  4322. $queryNew .= " and (btr.title like concat('%',{$paramName},'%') ) ";
  4323. $sqlParam[$paramName] = $fdValue;
  4324. break;
  4325. case "status":
  4326. switch (intval($fdValue)) {
  4327. case 1:
  4328. $queryNew .= " and tdwkt.`status`=" . (intval($fdValue) - 1) . " ";
  4329. break;
  4330. }
  4331. break;
  4332. case "catalog":
  4333. if (!empty($bizWorker)) {
  4334. switch (intval($fdValue)) {
  4335. case 1:
  4336. $queryNew .= " and tdwkt.leader_workerid=" . intval($bizWorker["id"]) . " ";
  4337. break;
  4338. case 2:
  4339. $queryNew .= " and tdwkt.id in (select workteamid from biz_todowork where workteam_mode=2 and biz_workerid=" . intval($bizWorker["id"]) . " ) ";
  4340. break;
  4341. }
  4342. }
  4343. break;
  4344. }
  4345. }
  4346. $query = $queryNew;
  4347. }
  4348. if (!empty($bizWorker)) {
  4349. $query .= " and ( tdwkt.leader_workerid=" . intval($bizWorker["id"]);
  4350. $query .= " or tdwkt.id in (select workteamid from biz_todowork where biz_workerid=" . intval($bizWorker["id"]) . " ) ";
  4351. $query .= " )";
  4352. }
  4353. if (!empty($bizTrader)) {
  4354. $query .= " and btr.biz_traderid=" . intval($bizTrader["id"]) . " ";
  4355. }
  4356. //排序处理
  4357. $orderby = isset($ajaxdata["orderby"]) ? $ajaxdata["orderby"] : $GPC["orderby"];
  4358. switch (intval($orderby)) {
  4359. case 1: //1-薪资额倒序
  4360. $orderby = " order by btr.salary desc ";
  4361. break;
  4362. default: //0-默认时间倒序
  4363. $orderby = " order by tdwkt.id desc ";
  4364. break;
  4365. }
  4366. //构建sql串
  4367. $sqlBody = "";
  4368. $sqlBody .= " from biz_todoworkteam tdwkt ";
  4369. $sqlBody .= " left join biz_trader_recruit btr on btr.id=tdwkt.biz_recruitid ";
  4370. $sqlBody .= " left join biz_trader bt on bt.id=btr.biz_traderid ";
  4371. $sqlBody .= " left join biz_worker lwk on lwk.id=tdwkt.leader_workerid ";
  4372. $sqlBody .= " left join base_user lbu on lbu.id=lwk.base_userid ";
  4373. $sqlBody .= " where 1=1 " . $query;
  4374. //查询sql及统计sql
  4375. $start = (intval($pageIndex) - 1) * $pageSize;
  4376. $sqlFetch = " select tdwkt.* ";
  4377. $sqlFetch .= " ,btr.title as recruit_title";
  4378. $sqlFetch .= " ,bt.company_name as bt_company_name";
  4379. $sqlFetch .= " ,(case when lwk.true_name<>'' then lwk.true_name else lwk.nickname end) as lwk_name,lbu.mobile as lbu_mobile,lwk.profile_photo as lwkprofile_photo";
  4380. $sqlFetch .= " {$sqlBody} {$orderby} limit {$start},{$pageSize} ";
  4381. $pageData = pdo_fetchall($sqlFetch, $sqlParam);
  4382. //联合查询下,列项应该不算太多,可手工转换/映射!!或者以占主体的实体为主进行转换/映射;
  4383. foreach ($pageData as &$data) { //数据转换/映射
  4384. $data["iamleader"] = ($data["leader_workerid"] == intval($bizWorker["id"]));
  4385. $data["createtime"] = date("Y-m-d H:i:s", $data["createtime"]);
  4386. $data["plan_dotime"] = date("Y-m-d", $data["plan_dotime"]);
  4387. $data["remark"] = trim(explode("\n", $data["remark"])[0]);
  4388. $data["statusName"] = bizbase_todoWorkTeamStatusName(intval($data["status"]));
  4389. }
  4390. $sqlSummary = " select count(*) as count " . $sqlBody . ";";
  4391. $sumData = pdo_fetch($sqlSummary, $sqlParam);
  4392. return array(
  4393. "pageData" => $pageData,
  4394. "count" => intval($sumData["count"]),
  4395. );
  4396. break;
  4397. case "fetchallTeamFollowByPlater":
  4398. case "fetchallTeamFollowByTrader":
  4399. case "fetchallTeamFollowByWorker":
  4400. $teamid = isset($ajaxdata["teamid"]) ? $ajaxdata["teamid"] : $GPC["teamid"];
  4401. if (intval($teamid) <= 0) {
  4402. throw new GeneralException("", "没有传递必要的teamid参数或参数值不正确");
  4403. }
  4404. $teamInfo = pdo_fetch("select tdwkt.*, btr.biz_traderid
  4405. from biz_todoworkteam tdwkt
  4406. left join biz_trader_recruit btr on btr.id=tdwkt.biz_recruitid
  4407. where tdwkt.id=" . intval($teamid));
  4408. if (empty($teamInfo)) {
  4409. throw new GeneralException("", "团组id没有对应的记录,请核查!");
  4410. }
  4411. if (!empty($bizTrader)) {
  4412. if (intval($teamInfo["biz_traderid"]) != intval($bizTrader["id"])) {
  4413. throw new GeneralException("", "此团组不是报的您家的名,请核查!");
  4414. }
  4415. }
  4416. case "fetchallByPlater":
  4417. case "fetchallByTrader":
  4418. case "fetchallByTrader2":
  4419. case "fetchallByWorker":
  4420. case "fetchallRecurit":
  4421. case "fetchallRecuritGroup":
  4422. $exportExcel = isset($ajaxdata["exportExcel"]) ? $ajaxdata["exportExcel"] : $GPC["exportExcel"];
  4423. $sqlParam = array();
  4424. $sqlSelectExt = "";
  4425. //查询处理
  4426. $query = isset($ajaxdata["query"]) ? $ajaxdata["query"] : $GPC["query"];
  4427. $query = empty(trim($exportExcel)) ? $query : json_decode($query, true);
  4428. if (empty($query) && !is_array($query)) { //验证一下query信息集
  4429. $query = " and 1=1 and tdwk.status != 0 ";
  4430. } else {
  4431. $queryNew = " and 1=1 and tdwk.status != 0 ";
  4432. foreach ($query as $fdName => $fdValue) {
  4433. if (empty($fdName) || empty($fdValue)) {
  4434. continue;
  4435. }
  4436. switch ($fdName) {
  4437. case "nowUrgent":
  4438. if (empty(trim($fdValue))) {
  4439. continue;
  4440. }
  4441. switch (intval($fdValue)) {
  4442. case 1:
  4443. $queryNew .= " and ( btr.urgent_level=1 ) ";
  4444. break;
  4445. case 2:
  4446. $queryNew .= " and ( btr.urgent_level=0 )";
  4447. break;
  4448. }
  4449. break;
  4450. case "workerId":
  4451. if (empty(trim($fdValue))) {
  4452. continue;
  4453. }
  4454. $queryNew .= " and tdwk.biz_workerid=" . intval($fdValue) . " ";
  4455. break;
  4456. case "worksn":
  4457. if (empty(trim($fdValue))) {
  4458. continue;
  4459. }
  4460. $queryNew .= " and tdwk.id=" . base_fetchIdBySN($fdValue) . " ";
  4461. break;
  4462. case "traderId":
  4463. if (empty(trim($fdValue))) {
  4464. continue;
  4465. }
  4466. $queryNew .= " and btr.biz_traderid=" . intval($fdValue) . " ";
  4467. break;
  4468. case "recuritId":
  4469. if (empty(trim($fdValue))) {
  4470. continue;
  4471. }
  4472. $queryNew .= " and tdwk.biz_recruitid=" . intval($fdValue) . " ";
  4473. break;
  4474. case "recuritTitle":
  4475. if (empty(trim($fdValue))) {
  4476. continue;
  4477. }
  4478. $paramName = ":qy_btrtitle";
  4479. $queryNew .= " and (btr.title like concat('%',{$paramName},'%') ) ";
  4480. $sqlParam[$paramName] = $fdValue;
  4481. break;
  4482. case "workArea":
  4483. if (empty($fdValue)) {
  4484. continue;
  4485. }
  4486. if (trim($fdValue) == "全部") {
  4487. continue;
  4488. }
  4489. $queryNew .= " and ( 1=0 ";
  4490. foreach (explode("/", $fdValue) as $index => $subquery) {
  4491. $paramName = ":qy_workArea_" . intval($index);
  4492. $queryNew .= " or btr.work_addr like concat('%',{$paramName},'%') ";
  4493. $sqlParam[$paramName] = $subquery;
  4494. }
  4495. $queryNew .= " ) ";
  4496. break;
  4497. case "memberName":
  4498. if (empty(trim($fdValue))) {
  4499. continue;
  4500. }
  4501. $paramName = ":qy_wkname";
  4502. $queryNew .= " and (wk.true_name like concat('%',{$paramName},'%') or wk.nickname like concat('%',{$paramName},'%')) ";
  4503. $sqlParam[$paramName] = $fdValue;
  4504. break;
  4505. case "memberMobile":
  4506. if (empty(trim($fdValue))) {
  4507. continue;
  4508. }
  4509. $paramName = ":qy_memberMobile";
  4510. $queryNew .= " and (bu.mobile like concat('%',{$paramName},'%') ) ";
  4511. $sqlParam[$paramName] = $fdValue;
  4512. break;
  4513. case "memberRealed":
  4514. if (empty(trim($fdValue))) {
  4515. continue;
  4516. }
  4517. switch (intval($fdValue)) {
  4518. case 1:
  4519. $queryNew .= " and ifnull(wk.idcard,'')='' ";
  4520. break;
  4521. case 2:
  4522. $queryNew .= " and ifnull(wk.idcard,'')<>'' ";
  4523. break;
  4524. }
  4525. break;
  4526. case "workSettleMode":
  4527. if (empty(trim($fdValue))) {
  4528. continue;
  4529. }
  4530. switch (intval($fdValue)) {
  4531. case 1: //完工结
  4532. $queryNew .= " and ( btr.settle_catalog=0 and btr.finish_datetime>btr.begin_datetime) ";
  4533. break;
  4534. case 2: //日结
  4535. $queryNew .= " and ( btr.settle_catalog=0 and btr.finish_datetime<=btr.begin_datetime) ";
  4536. break;
  4537. case 3: //批量
  4538. $queryNew .= " and ( btr.settle_catalog=1 ) ";
  4539. break;
  4540. }
  4541. break;
  4542. case "traderName":
  4543. if (empty(trim($fdValue))) {
  4544. continue;
  4545. }
  4546. $paramName = ":qy_traderName";
  4547. $queryNew .= " and (bt.company_name like concat('%',{$paramName},'%') ) ";
  4548. $sqlParam[$paramName] = $fdValue;
  4549. break;
  4550. case "startDate":
  4551. if (empty(trim($fdValue))) {
  4552. continue;
  4553. }
  4554. $queryNew .= " and tdwk.todo_begindate>=" . strtotime(date("Y-m-d", strtotime($fdValue))) . " and tdwk.todo_begindate<=" . strtotime(date("Y-m-d 23:59:59", strtotime($fdValue))) . " ";
  4555. break;
  4556. case "startDate2":
  4557. if (empty(trim($fdValue))) {
  4558. continue;
  4559. }
  4560. $queryNew .= " and tdwk.worked_begintime>=" . strtotime(date("Y-m-d", strtotime($fdValue))) . " and tdwk.worked_begintime<=" . strtotime(date("Y-m-d 23:59:59", strtotime($fdValue))) . " ";
  4561. break;
  4562. case "overtimePay":
  4563. if (empty(trim($fdValue))) {
  4564. continue;
  4565. }
  4566. $queryNew .= " and (tdwk.`status`=4 and " . time() . "-ifnull(tdwk.worked_finishtime,0)>24*3600) ";
  4567. break;
  4568. case "recuritStatus":
  4569. switch (intval($fdValue)) {
  4570. case 1:
  4571. $queryNew .= " and btr.`status`=0 ";
  4572. break;
  4573. case 2:
  4574. $queryNew .= " and btr.`status`=1 ";
  4575. break;
  4576. case 3: //批量招聘 终止招聘 所以无法由时间判定进行中
  4577. $queryNew .= " and (btr.`status`>=2 or btr.`status`=-2) ";
  4578. break;
  4579. case 4:
  4580. $queryNew .= " and btr.`status`=-1 ";
  4581. break;
  4582. case 91: //待上线
  4583. $queryNew .= " and (btr.`status`<2) ";
  4584. break;
  4585. }
  4586. break;
  4587. case "status": //0-待提交;1-已报名待审核;2-已审核待开工;-1-报名被驳回;3-已开始工作;4-已结束工作待结算;5-已结算;-2-取消报名;-3-被违约 -4-被动取消 -5-未结算
  4588. switch (intval($fdValue)) {
  4589. case 1: //结合一下团组态
  4590. $queryNew .= " and ((tdwk.workteam_mode<=0 and tdwk.`status`=0) or (tdwk.workteam_mode>0 and tdwkt.`status`=0)) ";
  4591. break;
  4592. case 2:
  4593. if (empty($teamInfo) && !empty($bizTrader)) { //商家待录用模式
  4594. $bizTrader_EnrollWaitAudit = 9988;
  4595. $queryNew .= " and ((tdwk.workteam_mode<=0 and tdwk.`status`=1) or (tdwk.workteam_mode=1 and tdwkt.`status`=3)) ";
  4596. } else {
  4597. $queryNew .= " and ((tdwk.workteam_mode<=0 and tdwk.`status`=1) or (tdwk.workteam_mode>0 and tdwkt.`status`=3 and tdwk.`status`=1)) ";
  4598. }
  4599. break;
  4600. case 3:
  4601. $queryNew .= " and ((tdwk.workteam_mode<=0 and tdwk.`status`=2) or (tdwk.workteam_mode>0 and tdwkt.`status`=4 and tdwk.`status`=2)) ";
  4602. break;
  4603. case 4:
  4604. $queryNew .= " and ((tdwk.workteam_mode<=0 and tdwk.`status`=-1) or (tdwk.workteam_mode>0 and tdwkt.`status`=5)) ";
  4605. break;
  4606. case 5:
  4607. $queryNew .= " and tdwk.`status`=3 ";
  4608. break;
  4609. case 6:
  4610. $queryNew .= " and tdwk.`status` in (2,3,4) ";
  4611. break;
  4612. case 7:
  4613. $queryNew .= " and tdwk.`status`=5 ";
  4614. break;
  4615. case 8:
  4616. $queryNew .= " and tdwk.`status`=-2 ";
  4617. break;
  4618. case 9:
  4619. $queryNew .= " and tdwk.`status`=-3 ";
  4620. break;
  4621. case 10:
  4622. $queryNew .= " and tdwk.`status`=-4 ";
  4623. break;
  4624. case 11:
  4625. $queryNew .= " and (tdwk.`status`=-5 or tdwk.`status`=-8) ";
  4626. break;
  4627. case 12:
  4628. $queryNew .= " and tdwk.`status`=-6 ";
  4629. break;
  4630. case 13:
  4631. $queryNew .= " and tdwk.`status`=-7 ";
  4632. break;
  4633. case 14:
  4634. $queryNew .= " and (tdwk.`status`=-6 or tdwk.`status`=-7) ";
  4635. break;
  4636. case 15:
  4637. $queryNew .= " and tdwk.`status`=-8 ";
  4638. break;
  4639. case 90: //进行中
  4640. $queryNew .= " and tdwk.`status`=90 ";
  4641. break;
  4642. case 91: //进行中
  4643. $queryNew .= " and tdwk.`status`>=2 and tdwk.`status`<=3 ";
  4644. break;
  4645. case 92: //异常订单
  4646. $queryNew .= " and tdwk.`status`<0 ";
  4647. break;
  4648. case 93: //会员异常订单
  4649. $workerExceptionQuery = 9988;
  4650. $queryNew .= " and (tdwk.`status`=-6 or tdwk.`status`=-7";
  4651. $queryNew .= " or (tdwk.`status`=4 and " . time() . "-ifnull(tdwk.worked_finishtime,0)>24*3600)";
  4652. $queryNew .= " )";
  4653. break;
  4654. case 94: //商家异常订单
  4655. $traderExceptionQuery = 9988;
  4656. $queryNew .= " and (tdwk.`status`=-3 or tdwk.`status`=-5 or tdwk.`status`=-8";
  4657. $queryNew .= " or (tdwk.`status`=4 and " . time() . "-ifnull(tdwk.worked_finishtime,0)>24*3600)";
  4658. $queryNew .= " )";
  4659. break;
  4660. case 95: //平台代支付订单
  4661. $queryNew .= " and ( tdwkat2.`biz_catalog`=7 )";
  4662. break;
  4663. case 96: //查看招聘信息
  4664. //time()
  4665. $queryNew .= " and ((btr.`begin_datetime` > '" . time() . "') and btr.status in (2,3,4,5)) ";
  4666. // echo " and ((`createtime` between '".strtotime(date('Y-m-d',time())) ."' and '".time().")' and btr.status in (2,3,4,5)) ";
  4667. // exit();
  4668. // $pageData = pdo_fetchall($sql, array());
  4669. // return array( "pagedata"=>$pageData,"args"=>array() );
  4670. break;
  4671. case 97: //查看工作,大于开始工作时间并且处于工作中的状态,并且没有纠纷
  4672. $queryNew .= " and ( btr.`begin_datetime` < '" . strtotime(date('Y-m-d H:i:s', time())) . "' and btr.status in (2,3,4,5) and btr.id in (select biz_recruitid from biz_todowork where biz_todowork.status=2 or biz_todowork.status=3 or biz_todowork.status=4 or biz_todowork.status=90)) ";
  4673. break;
  4674. case 98: //历史发布
  4675. // $queryNew .=" and ( btr.`finish_datetime` < '".strtotime(date('Y-m-d H:i:s',time()))."' and btr.id in (select biz_recruitid from biz_todowork where biz_todowork.status in (-1,-5,-2,-3,-4,5))
  4676. // or btr.id in (select biz_trader_recruit.id from biz_trader_recruit left join biz_todowork on biz_todowork.biz_recruitid = biz_trader_recruit.id where (select count(*)as count from biz_todowork where biz_recruitid = biz_trader_recruit.id) = 0 and biz_trader_recruit.finish_datetime < '".strtotime(date('Y-m-d H:i:s',time()))."')
  4677. // ) ";
  4678. $sql = "select btr.id as btr_id,
  4679. btr.*,btr.id as btr_id,tdwk.*,(case when (tdwk.`status`=4 and " . time() . "-ifnull(tdwk.worked_finishtime,0)>24*3600) then 1 else 0 end) as overtimePay
  4680. ,tdwkt.id as tdwkt_id,tdwkt.`status` as tdwkt_status
  4681. ,btr.`status` as recruit_status,btr.createtime as recruit_createtime,btr.updatetime as recruit_updatetime,btr.need_total as btr_need_total
  4682. ,btr.title as recruit_title,from_unixtime(btr.begin_datetime,'%Y-%m-%d') as btr_begindatetime,from_unixtime(btr.finish_datetime,'%Y-%m-%d') as btr_finishdatetime
  4683. ,btr.begin_hour as btr_begin_hour,btr.finish_hour as btr_finish_hour,btr.work_addr1 as btr_work_addr1,btr.feeper as btr_feeper,btr.feetotal as btr_feetotal
  4684. ,btr.settle_catalog as btr_settle_catalog,btr.age_mode as btr_age_mode,btr.gender_mode as btr_gender_mode,btr.meals_providing as btr_meals_providing
  4685. ,btr.salary as btr_salary,btr.feetotal as btr_feetotal,btr.settle_mode as btr_settle_mode
  4686. ,bt.company_name as bt_company_name,btbu.mobile as btbu_mobile
  4687. ,(case when ifnull(bt22.true_name,'')<>'' then bt22.true_name else bt22.nickname end) as bt22_true_name
  4688. ,wk.id as wkid,(case when wk.true_name<>'' then wk.true_name else wk.nickname end) as wk_name,bu.mobile as bu_mobile,wk.profile_photo as wkprofile_photo
  4689. ,wk.realname_handled as wk_realname_handled,wk.gender as wk_gender,wk.idcard as wk_idcard,wk.birthaddr as wk_birthaddr,wk.birthday as wk_birthday
  4690. ,lwk.id as lwkid,(case when lwk.true_name<>'' then lwk.true_name else lwk.nickname end) as lwk_name,lbu.mobile as lbu_mobile,lwk.profile_photo as lwkprofile_photo
  4691. ,concat(brd.id,'-',brd.begin_datetime,'-',brd.finish_datetime,'-',bt2.id,'-',bt2bu.id,'-',bt2bu.mobile,'-',bt2.true_name) as delegate_info
  4692. ,wkapa.id as wkapa_id,wkapa.deleted as wkapa_deleted,wkapa.result_level as wk_appraiseLevel,wkapa.result_desc as wk_appraiseRemark
  4693. ,tdapa.id as tdapa_id,tdapa.deleted as tdapa_deleted,tdapa.result_level as td_appraiseLevel,tdapa.result_desc as td_appraiseRemark
  4694. ,tdwkat2.`biz_catalog` as tdwk_settlecatalog
  4695. from biz_trader_recruit as btr
  4696. left join biz_todowork tdwk on btr.id=tdwk.biz_recruitid
  4697. left join biz_todoworkteam tdwkt on tdwkt.id=tdwk.workteamid
  4698. left join biz_trader bt on bt.id=btr.biz_traderid
  4699. left join base_user btbu on btbu.id=bt.base_userid
  4700. left join biz_trader2 bt22 on bt22.id=tdwk.settled_userid
  4701. left join biz_worker lwk on lwk.id=tdwkt.leader_workerid left join base_user lbu on lbu.id=lwk.base_userid
  4702. left join biz_worker wk on wk.id=tdwk.biz_workerid left join base_user bu on bu.id=wk.base_userid
  4703. left join biz_recruit_delegate brd on brd.biz_recruitid=tdwk.biz_recruitid and brd.finish_datetime>1653529202
  4704. left join biz_trader2 bt2 on bt2.id=brd.biz_trader2id
  4705. left join base_user bt2bu on bt2bu.id=bt2.base_userid
  4706. left join biz_appraisal wkapa on wkapa.biz_catalog=1 and wkapa.biz_id=tdwk.id
  4707. left join biz_appraisal tdapa on tdapa.biz_catalog=2 and tdapa.biz_id=tdwk.id
  4708. left join biz_trader_account tdwkat1 on tdwk.`status`=5 and tdwkat1.`status`=1 and tdwkat1.`type`=0 and tdwkat1.biz_id=tdwk.id and(tdwkat1.`biz_catalog`=1 or tdwkat1.`biz_catalog`=4)
  4709. left join biz_trader_account tdwkat2 on tdwk.`status`=5 and tdwkat2.`status`=1 and tdwkat2.`type`=1 and tdwkat2.biz_id=tdwkat1.id and(tdwkat2.`biz_catalog`=6 or tdwkat2.`biz_catalog`=7)
  4710. where (select count(*)as count from biz_todowork where biz_todowork.biz_recruitid=btr.id)=0
  4711. and btr.biz_traderid=" . intval($bizTrader["id"]) . " and btr.finish_datetime<'" . strtotime(date('Y-m-d H:i:s', time())) . "' or (tdwk.status in(-1,-5,-2,-3,-4,5) and btr.biz_traderid=" . intval($bizTrader["id"]) . ") group by btr.id order by btr.id desc";
  4712. $pageData = pdo_fetchall($sql, array());
  4713. return array("pageData" => $pageData, "args" => array());
  4714. break;
  4715. //这里是工单
  4716. //这里是修改 增加状态的条件,筛选 招聘信息
  4717. // 查看工作和历史发布 查看招聘 放在招聘里面 调用不同的接口
  4718. // 有人报名就是工单
  4719. }
  4720. break;
  4721. case "teamstatus": //0-待参团;1-已提交参团;2-已入团;-1-参团被驳回;-2-参团被踢出;-3-已解散;-4-被动取消;
  4722. switch (intval($fdValue)) {
  4723. case 1:
  4724. $queryNew .= " and tdwk.`teamstatus`=0 ";
  4725. break;
  4726. case 2:
  4727. $queryNew .= " and tdwk.`teamstatus`=1 ";
  4728. break;
  4729. case 3:
  4730. $queryNew .= " and tdwk.`teamstatus`=2 ";
  4731. break;
  4732. case 4:
  4733. $queryNew .= " and tdwk.`teamstatus`=-1 ";
  4734. break;
  4735. case 5:
  4736. $queryNew .= " and tdwk.`teamstatus`=-2 ";
  4737. break;
  4738. case 6:
  4739. $queryNew .= " and tdwk.`teamstatus`=-3 ";
  4740. break;
  4741. case 7:
  4742. $queryNew .= " and tdwk.`teamstatus`=-4 ";
  4743. break;
  4744. }
  4745. break;
  4746. case "teamrole":
  4747. switch (intval($fdValue)) {
  4748. case 1:
  4749. $queryNew .= " and tdwk.workteam_mode=0 ";
  4750. break;
  4751. case 2:
  4752. $queryNew .= " and tdwk.workteam_mode>0 ";
  4753. break;
  4754. case 3:
  4755. $queryNew .= " and tdwk.workteam_mode=1 ";
  4756. break;
  4757. case 4:
  4758. $queryNew .= " and tdwk.workteam_mode=2 ";
  4759. break;
  4760. case 5: //报名成功后的代表项(单报项及团组代表项)
  4761. $queryNew .= " and (tdwk.workteam_mode>0 and tdwk.workteam_flag=1) ";
  4762. break;
  4763. }
  4764. break;
  4765. }
  4766. }
  4767. $query = $queryNew;
  4768. }
  4769. if (!empty($teamInfo)) {
  4770. $query .= " and tdwkt.id=" . intval($teamInfo["id"]) . " ";
  4771. } else {
  4772. if (!empty($bizWorker)) {
  4773. $query .= " and tdwk.biz_workerid=" . intval($bizWorker["id"]) . " ";
  4774. }
  4775. if (!empty($bizTrader)) {
  4776. $query .= " and btr.biz_traderid=" . intval($bizTrader["id"]) . " ";
  4777. }
  4778. if (!empty($bizTrader2)) {
  4779. $query .= " and brd.biz_trader2id=" . intval($bizTrader2["id"]) . " ";
  4780. }
  4781. }
  4782. //排序处理
  4783. $orderby = isset($ajaxdata["orderby"]) ? $ajaxdata["orderby"] : $GPC["orderby"];
  4784. switch (intval($orderby)) {
  4785. case 1: //1-创建时间倒序
  4786. $orderby = " order by tdwk.id desc ";
  4787. break;
  4788. default: //0-默认更新时间倒序
  4789. $orderby = " order by tdwk.updatetime desc,tdwk.id desc ";
  4790. break;
  4791. }
  4792. //构建sql串
  4793. $sqlBody = "";
  4794. //这里是修改,新增一个统计
  4795. $sqlBody .= " ,(select count(id) from biz_todowork where status=1 and biz_recruitid=btr.id) as tdwk_count_status1";
  4796. $sqlBody .= " ,(select count(id) from biz_todowork where status=2 and biz_recruitid=btr.id) as tdwk_count_status2";
  4797. $sqlBody .= " ,(select count(id) from biz_todowork where status=4 and biz_recruitid=btr.id) as tdwk_count_status4";
  4798. $sqlBody .= " ,(select count(id) from biz_todowork where status=5 and biz_recruitid=btr.id) as tdwk_count_status5";
  4799. $sqlBody .= " from biz_trader_recruit btr ";
  4800. // $sqlBody.=" left join biz_trader_recruit btr on btr.id=tdwk.biz_recruitid ";
  4801. $sqlBody .= " left join biz_todowork tdwk on btr.id=tdwk.biz_recruitid ";
  4802. //这里是修改
  4803. $sqlBody .= " left join biz_todoworkteam tdwkt on tdwkt.id=tdwk.workteamid ";
  4804. $sqlBody .= " left join biz_trader bt on bt.id=btr.biz_traderid ";
  4805. $sqlBody .= " left join base_user btbu on btbu.id=bt.base_userid ";
  4806. $sqlBody .= " left join biz_trader2 bt22 on bt22.id=tdwk.settled_userid ";
  4807. $sqlBody .= " left join biz_worker lwk on lwk.id=tdwkt.leader_workerid ";
  4808. $sqlBody .= " left join base_user lbu on lbu.id=lwk.base_userid ";
  4809. $sqlBody .= " left join biz_worker wk on wk.id=tdwk.biz_workerid ";
  4810. $sqlBody .= " left join base_user bu on bu.id=wk.base_userid ";
  4811. $sqlBody .= " left join biz_recruit_delegate brd on brd.biz_recruitid=tdwk.biz_recruitid and brd.finish_datetime>" . time();
  4812. $sqlBody .= " left join biz_trader2 bt2 on bt2.id=brd.biz_trader2id ";
  4813. $sqlBody .= " left join base_user bt2bu on bt2bu.id=bt2.base_userid ";
  4814. $sqlBody .= " left join biz_appraisal wkapa on wkapa.biz_catalog=1 and wkapa.biz_id=tdwk.id ";
  4815. $sqlBody .= " left join biz_appraisal tdapa on tdapa.biz_catalog=2 and tdapa.biz_id=tdwk.id ";
  4816. $sqlBody .= " left join biz_trader_account tdwkat1 on tdwk.`status`=5 and tdwkat1.`status`=1 and tdwkat1.`type`=0 and tdwkat1.biz_id=tdwk.id and (tdwkat1.`biz_catalog`=1 or tdwkat1.`biz_catalog`=4)";
  4817. $sqlBody .= " left join biz_trader_account tdwkat2 on tdwk.`status`=5 and tdwkat2.`status`=1 and tdwkat2.`type`=1 and tdwkat2.biz_id=tdwkat1.id and (tdwkat2.`biz_catalog`=6 or tdwkat2.`biz_catalog`=7)";
  4818. $sqlBody .= " where 1=1 " . $query;
  4819. //这里是修改,工单分组
  4820. if ($handleMode == "fetchallRecurit") {
  4821. $sqlBody .= " group by tdwk.biz_recruitid ";
  4822. $sqlSelectExt .= ",count(tdwk.id) as tdwk_total";
  4823. }
  4824. if ($handleMode == "fetchallRecuritGroup") {
  4825. $sqlSelectExt .= ",count(tdwk.id) as tdwk_total";
  4826. $sqlBody .= " and tdwk.workteam_mode>0 ";
  4827. $sqlBody .= " group by tdwk.workteamid ";
  4828. }
  4829. //查询sql及统计sql
  4830. $sqlFetch = " select btr.*,btr.id as btr_id,tdwk.*,(case when (tdwk.`status`=4 and " . time() . "-ifnull(tdwk.worked_finishtime,0)>24*3600) then 1 else 0 end) as overtimePay ";
  4831. $sqlFetch .= " ,tdwkt.id as tdwkt_id,tdwkt.`status` as tdwkt_status";
  4832. $sqlFetch .= " ,btr.`status` as recruit_status,btr.createtime as recruit_createtime,btr.updatetime as recruit_updatetime,btr.need_total as btr_need_total ";
  4833. $sqlFetch .= " ,btr.title as recruit_title,btr.begin_datetime as btr_begindatetime,btr.finish_datetime as btr_finishdatetime";
  4834. $sqlFetch .= " ,btr.begin_hour as btr_begin_hour,btr.finish_hour as btr_finish_hour,btr.work_addr1 as btr_work_addr1,btr.feeper as btr_feeper,btr.feetotal as btr_feetotal";
  4835. $sqlFetch .= " ,btr.settle_catalog as btr_settle_catalog,btr.age_mode as btr_age_mode,btr.gender_mode as btr_gender_mode,btr.meals_providing as btr_meals_providing";
  4836. $sqlFetch .= " ,btr.salary as btr_salary,btr.feetotal as btr_feetotal,btr.settle_mode as btr_settle_mode";
  4837. $sqlFetch .= " ,bt.company_name as bt_company_name,btbu.mobile as btbu_mobile";
  4838. $sqlFetch .= " ,(case when ifnull(bt22.true_name,'')<>'' then bt22.true_name else bt22.nickname end) as bt22_true_name";
  4839. $sqlFetch .= " ,wk.id as wkid,(case when wk.true_name<>'' then wk.true_name else wk.nickname end) as wk_name,bu.mobile as bu_mobile,wk.profile_photo as wkprofile_photo";
  4840. $sqlFetch .= " ,wk.realname_handled as wk_realname_handled,wk.gender as wk_gender,wk.idcard as wk_idcard,wk.birthaddr as wk_birthaddr,wk.birthday as wk_birthday";
  4841. $sqlFetch .= " ,lwk.id as lwkid,(case when lwk.true_name<>'' then lwk.true_name else lwk.nickname end) as lwk_name,lbu.mobile as lbu_mobile,lwk.profile_photo as lwkprofile_photo";
  4842. $sqlFetch .= " ,concat(brd.id,'-',brd.begin_datetime,'-',brd.finish_datetime,'-',bt2.id,'-',bt2bu.id,'-',bt2bu.mobile,'-',bt2.true_name) as delegate_info ";
  4843. $sqlFetch .= " ,wkapa.id as wkapa_id,wkapa.deleted as wkapa_deleted,wkapa.result_level as wk_appraiseLevel,wkapa.result_desc as wk_appraiseRemark"; //wkapa_id小于等于0则会员未评价商家,否则已评价
  4844. $sqlFetch .= " ,tdapa.id as tdapa_id,tdapa.deleted as tdapa_deleted,tdapa.result_level as td_appraiseLevel,tdapa.result_desc as td_appraiseRemark";
  4845. $sqlFetch .= " ,tdwkat2.`biz_catalog` as tdwk_settlecatalog";
  4846. $sqlFetch .= " {$sqlSelectExt} {$sqlBody} {$orderby} ";
  4847. $exportExcel = isset($ajaxdata["exportExcel"]) ? $ajaxdata["exportExcel"] : $GPC["exportExcel"];
  4848. if (trim($exportExcel) != "true") { //正常输出
  4849. $start = (intval($pageIndex) - 1) * $pageSize;
  4850. $sqlFetch .= " limit {$start},{$pageSize} ";
  4851. $pageData = pdo_fetchall($sqlFetch, $sqlParam);
  4852. //联合查询下,列项应该不算太多,可手工转换/映射!!或者以占主体的实体为主进行转换/映射;
  4853. foreach ($pageData as &$data) { //数据转换/映射
  4854. if (!empty($bizWorker)) {
  4855. if (mb_strpos($data["worker_readed"], $data["status"] . ",") === false) {
  4856. pdo_query("update biz_todowork set worker_readed=concat(worker_readed,`status`,',') where id=" . intval($data["id"]));
  4857. }
  4858. }
  4859. if (!empty($bizTrader)) {
  4860. if (mb_strpos($data["trader_readed"], $data["status"] . ",") === false) {
  4861. pdo_query("update biz_todowork set trader_readed=concat(trader_readed,`status`,',') where id=" . intval($data["id"]));
  4862. }
  4863. }
  4864. $delegateInfo = bizbase_recruitDelegateInfo($data);
  4865. foreach ($delegateInfo as $key => $val) {
  4866. $data["delegate_" . $key] = $val;
  4867. }
  4868. unset($data["delegate_info"]);
  4869. //----------------------
  4870. $data["wk_age"] = "";
  4871. if (intval($data["wk_birthday"]) > 0) {
  4872. $birthdate = date("Ymd", $data["wk_birthday"]);
  4873. $datetime1 = date_create_from_format("Ymd", $birthdate);
  4874. $datetime1 = new \DateTime(date("Y-m-d", date_timestamp_get($datetime1)));
  4875. $datetime2 = new \DateTime(date("Y-m-d", time()));
  4876. $interval = $datetime1->diff($datetime2);
  4877. $data["wk_age"] = intval($interval->format('%Y'));
  4878. }
  4879. //----------------------
  4880. $data["tdwk_settlecatalogName"] = "";
  4881. switch (intval($data["tdwk_settlecatalog"])) {
  4882. case 6:
  4883. $data["tdwk_settlecatalogName"] = "商家订单整体结算";
  4884. break;
  4885. case 7:
  4886. $data["tdwk_settlecatalogName"] = "平台代商家结算订单";
  4887. break;
  4888. }
  4889. //----------------------
  4890. if (intval($workerExceptionQuery) > 0) {
  4891. $data["except_reason"] = "";
  4892. switch (intval($data["status"])) {
  4893. case -6:
  4894. $data["except_reason"] = "未开始工作";
  4895. break;
  4896. case -7:
  4897. $data["except_reason"] = "未结束工作";
  4898. break;
  4899. case 4:
  4900. $data["except_reason"] = "超过24小时未支付";
  4901. break;
  4902. }
  4903. }
  4904. if (intval($traderExceptionQuery) > 0) {
  4905. $data["except_reason"] = "";
  4906. switch (intval($data["status"])) {
  4907. case -3:
  4908. $data["except_reason"] = "商家违约";
  4909. break;
  4910. case 4:
  4911. $data["except_reason"] = "超过24小时未支付";
  4912. break;
  4913. }
  4914. }
  4915. //----------------------
  4916. if (intval($bizTrader_EnrollWaitAudit) > 0 && intval($data["tdwkt_status"]) == 3) {
  4917. $teamMembers = pdo_fetchall("select wk.id as wkid
  4918. ,wk.true_name as wk_name,bu.mobile as bu_mobile,wk.profile_photo as wkprofile_photo
  4919. ,wk.gender as wk_gender,wk.idcard as wk_idcard,wk.birthaddr as wk_birthaddr,wk.birthday as wk_birthday
  4920. from biz_todowork tdwk
  4921. left join biz_worker wk on wk.id=tdwk.biz_workerid
  4922. left join base_user bu on bu.id=wk.base_userid
  4923. where tdwk.workteamid=:workteamid and tdwk.teamstatus>=2
  4924. order by tdwk.workteam_mode desc,tdwk.createtime asc", array(":workteamid" => $data["tdwkt_id"]));
  4925. foreach ($teamMembers as &$subdata) { //数据转换/映射
  4926. $subdata["wk_gender"] = intval($subdata["wk_gender"]) < 0 ? "" : (intval($subdata["wk_gender"]) == 0 ? "男" : "女");
  4927. //----------------------
  4928. $subdata["wk_age"] = "";
  4929. if (intval($subdata["wk_birthday"]) > 0) {
  4930. $birthdate = date("Ymd", $subdata["wk_birthday"]);
  4931. $datetime1 = date_create_from_format("Ymd", $birthdate);
  4932. $datetime1 = new \DateTime(date("Y-m-d", date_timestamp_get($datetime1)));
  4933. $datetime2 = new \DateTime(date("Y-m-d", time()));
  4934. $interval = $datetime1->diff($datetime2);
  4935. $subdata["wk_age"] = intval($interval->format('%Y'));
  4936. }
  4937. }
  4938. $data["teamMembers"] = $teamMembers;
  4939. }
  4940. //----------------------
  4941. $data["btr_canTerminate"] = false;
  4942. if (intval($data["recruit_status"]) == 2) {
  4943. $data["btr_canTerminate"] = true;
  4944. }
  4945. $data["btr_canBreakoff"] = false;
  4946. if (
  4947. intval($data["recruit_status"]) == 2 //提前违约
  4948. && ((intval($data["btr_settle_catalog"]) == 0
  4949. ) || (intval($data["btr_settle_catalog"]) > 0
  4950. ))
  4951. ) {
  4952. $data["btr_canBreakoff"] = true;
  4953. }
  4954. $data["worksn"] = base_buildSNById("WK", $data["id"], 12, 12);
  4955. $data["wkteamsn"] = base_buildSNById("TM", $data["tdwkt_id"], 12, 12);
  4956. $data["btr_salary"] = round(floatval($data["btr_salary"]), 2);
  4957. $data["btr_feetotal"] = round(floatval($data["btr_feetotal"]), 2);
  4958. $data["itisme"] = ($data["wkid"] == intval($bizWorker["id"]));
  4959. $data["iamleader"] = ($data["lwkid"] == intval($bizWorker["id"]));
  4960. $data["statusName"] = bizbase_todoWorkStatusName($data["status"]);
  4961. $data["teamrole"] = bizbase_todoWorkTeamRoleName($data["workteam_mode"]);
  4962. $data["plan_dotime"] = date("Y-m-d", $data["todo_begindate"]);
  4963. $data["createtime"] = date("Y-m-d H:i:s", $data["createtime"]);
  4964. $data["recruit_createtime"] = intval($data["recruit_createtime"]) <= 0 ? "" : date("Y-m-d H:i:s", $data["recruit_createtime"]);
  4965. $data["recruit_updatetime"] = intval($data["recruit_updatetime"]) <= 0 ? "" : date("Y-m-d H:i:s", $data["recruit_updatetime"]);
  4966. $btr_begindatetime = $data['btr_begindatetime'];
  4967. $btr_finishdatetime = $data['btr_finishdatetime'];
  4968. $data["btr_begindatetime"] = date("Y-m-d", $btr_begindatetime);
  4969. $data["btr_finishdatetime"] = date("Y-m-d", $btr_finishdatetime);
  4970. $data["btr_begindatetime1"] = date("m-d", $btr_begindatetime);
  4971. $data["btr_finishdatetime1"] = date("m-d", $btr_finishdatetime);
  4972. $data["worked_begintime"] = intval($data["worked_begintime"]) <= 0 ? "" : date("Y-m-d H:i:s", $data["worked_begintime"]);
  4973. $data["worked_finishtime"] = intval($data["worked_finishtime"]) <= 0 ? "" : date("Y-m-d H:i:s", $data["worked_finishtime"]);
  4974. $data["settled_time"] = intval($data["settled_time"]) <= 0 ? "" : date("Y-m-d H:i:s", $data["settled_time"]);
  4975. $data["settled_modeName"] = intval($data["settled_mode"]) <= 0 ? "现场经理核销" : "商家核销";
  4976. $data["settled_userName"] = intval($data["settled_mode"]) <= 0 ? $data["bt22_true_name"] : $data["bt_company_name"];
  4977. $data["remark"] = trim(explode("\n", $data["remark"])[0]);
  4978. $data["teamremark"] = trim(explode("\n", $data["teamremark"])[0]);
  4979. $data["teamstatusName"] = bizbase_todoWorkSubTeamStatusName(intval($data["teamstatus"]));
  4980. $data["wk_appraiseLevel"] = intval($data["wkapa_deleted"]) > 0 ? -1 : intval($data["wk_appraiseLevel"]);
  4981. $data["td_appraiseLevel"] = intval($data["tdapa_deleted"]) > 0 ? -1 : intval($data["td_appraiseLevel"]);
  4982. }
  4983. $sqlSummary = " select count(*) as count " . $sqlBody . ";";
  4984. if ($handleMode == "fetchallRecurit") {
  4985. $sqlSummary = " select count(*) as count from (select tdwk.id " . $sqlBody . " ) as temp;";
  4986. }
  4987. $sumData = pdo_fetch($sqlSummary, $sqlParam);
  4988. // foreach ($pageData as $k=>$v){
  4989. // $pageData[$k]['enrolled_heads'] = explode(',',$v['enrolled_heads']);
  4990. // }
  4991. return array(
  4992. "pageData" => $pageData,
  4993. "count" => intval($sumData["count"]),
  4994. );
  4995. } else {
  4996. $sqlSummary = " select count(*) as count " . $sqlBody . ";";
  4997. if ($handleMode == "fetchallRecurit") {
  4998. $sqlSummary = " select count(*) as count from (select tdwk.id " . $sqlBody . " ) as temp;";
  4999. }
  5000. $sumData = pdo_fetch($sqlSummary, $sqlParam);
  5001. $recordTotal = intval($sumData["count"]);
  5002. $pageTotal = ceil($recordTotal / $pageSize);
  5003. $args = array(
  5004. "pageIndex" => 0, "pageSize" => $pageSize, "pageTotal" => $pageTotal,
  5005. "sqlFetch" => $sqlFetch, "sqlParam" => $sqlParam,
  5006. );
  5007. $csvTitle = array("开工时间", "姓名", "身份证号", "手机号", "订单编号", "招聘标题");
  5008. baseexcel_exportCsv("订单列表", $csvTitle, $args, function ($args) {
  5009. $pageIndex = intval($args["pageIndex"]) + 1;
  5010. $args["pageIndex"] = $pageIndex;
  5011. $pageSize = intval($args["pageSize"]);
  5012. $pageTotal = intval($args["pageTotal"]);
  5013. if ($pageIndex > $pageTotal) {
  5014. return false;
  5015. }
  5016. $sqlFetch = $args["sqlFetch"];
  5017. $sqlParam = $args["sqlParam"];
  5018. $start = (intval($pageIndex) - 1) * $pageSize;
  5019. $pageData111 = pdo_fetchall($sqlFetch . " limit {$start},{$pageSize} ", $sqlParam);
  5020. $pageData = array();
  5021. foreach ($pageData111 as &$datarow) { //数据转换/映射
  5022. $wk_name = json_encode($datarow["wk_name"]);
  5023. $wk_name = preg_replace("/\\\u[ed][0-9a-f]{3}\\\u[ed][0-9a-f]{3}/", "*", $wk_name); //替换成*
  5024. $wk_name = json_decode($wk_name);
  5025. $pageData[] = array(
  5026. //intval($datarow["worked_begintime"])<=0?"":"\t".date("Y-m-d H:i:s", $datarow["worked_begintime"])
  5027. (intval($datarow["btr_begindatetime"]) <= 0 ? "" : "\t" . date("Y-m-d", $datarow["btr_begindatetime"])) . " " . $datarow["btr_begin_hour"], $wk_name, "\t" . $datarow["wk_idcard"], "\t" . $datarow["bu_mobile"], base_buildSNById("WK", $datarow["id"], 12, 12), $datarow["recruit_title"],
  5028. );
  5029. }
  5030. return array("pagedata" => $pageData, "args" => $args);
  5031. });
  5032. }
  5033. break;
  5034. default:
  5035. throw new GeneralException("", "不支持的handleMode!");
  5036. }
  5037. }
  5038. /**********************营销活动相关逻辑**************************************/
  5039. function bizbase_mactivityEntityHandle($fromSubSystem, $baseUser, $bizUser, $handleMode, $ajaxdata, $GPC)
  5040. {
  5041. if (intval($baseUser["subsystem"]) == SUBSYS_LABOUR_MINA) {
  5042. $bizWorker = $bizUser;
  5043. }
  5044. if (intval($baseUser["subsystem"]) == SUBSYS_CAPITAL_MINA) {
  5045. $bizTrader = $bizUser;
  5046. }
  5047. if (intval($baseUser["subsystem"]) == SUBSYS_CAPITAL2_MINA) {
  5048. $bizTrader2 = $bizUser;
  5049. }
  5050. switch ($handleMode) {
  5051. case "fetch":
  5052. $bizId = isset($ajaxdata["bizId"]) ? $ajaxdata["bizId"] : $GPC["bizId"];
  5053. if (empty($bizId)) {
  5054. throw new GeneralException("", "没有传递必要的bizId参数");
  5055. }
  5056. $sqlSelectExt = "";
  5057. $nowLngLat = isset($ajaxdata["nowLngLat"]) ? $ajaxdata["nowLngLat"] : $GPC["nowLngLat"];
  5058. if (empty($nowLngLat) || !preg_match("/^\d+\.\d+,\d+\.\d+$/", $nowLngLat)) {
  5059. $nowLngLat = "";
  5060. } else {
  5061. $nowlng = floatval(explode(",", $nowLngLat)[0]);
  5062. $nowlat = floatval(explode(",", $nowLngLat)[1]);
  5063. $sqlSelectExt .= " ,(st_distance_sphere(point(CAST(bma.addr_lng AS decimal(11,8)),CAST(bma.addr_lat AS decimal(11,8))),point(CAST({$nowlng} AS decimal(11,8)),CAST({$nowlat} AS decimal(11,8))))) as distance ";
  5064. }
  5065. $sqlSelectExt .= " ,(select count(*) from biz_market_activity_order bmao where bmao.`status`=1 and bmao.market_activityid=bma.id and bmao.biz_workerid=" . intval($bizWorker["id"]) . ")>0 as enrolled ";
  5066. $activity = pdo_fetch("select bma.*,cbu.login_name as cbu_login_name,ubu.login_name as ubu_login_name {$sqlSelectExt}
  5067. from biz_market_activity as bma
  5068. left join base_user as cbu on cbu.id=bma.createuserid
  5069. left join base_user as ubu on ubu.id=bma.updateuserid
  5070. where bma.id=" . intval($bizId));
  5071. if (empty($activity)) {
  5072. throw new GeneralException("", "此id对应的记录不存在,请核查bizId是否正确!");
  5073. }
  5074. if (intval($activity["deleted"]) != 0) {
  5075. throw new GeneralException("", "信息已删除了,请核查后再处理!");
  5076. }
  5077. bizbase_mactivityStatus($activity);
  5078. $activity["list_photos"] = json_decode($activity["list_photos"], true);
  5079. $activity["detail_photos"] = json_decode($activity["detail_photos"], true);
  5080. $activity["begin_datetime"] = date("Y-m-d H:i:s", $activity["begin_datetime"]);
  5081. $activity["finish_datetime"] = date("Y-m-d H:i:s", $activity["finish_datetime"]);
  5082. $activity["price"] = round($activity["price"], 2);
  5083. $activity["activity_addr"] = json_decode($activity["activity_addr"], true);
  5084. $activity["remark"] = trim(explode("\n", $activity["remark"])[0]);
  5085. return $activity;
  5086. case "pushTop":
  5087. $bizId = isset($ajaxdata["bizId"]) ? $ajaxdata["bizId"] : $GPC["bizId"];
  5088. if (empty($bizId)) {
  5089. throw new GeneralException("", "没有传递必要的bizId参数");
  5090. }
  5091. $trader = pdo_fetch("select * from biz_market_activity where id=" . intval($bizId));
  5092. if (empty($trader)) {
  5093. throw new GeneralException("", "此id对应的营销活动记录不存在,请核查bizId是否正确!");
  5094. }
  5095. if (intval($trader["deleted"]) != 0) {
  5096. throw new GeneralException("", "营销活动已删除了,请核查后再处理!");
  5097. }
  5098. if (intval($trader["finish_datetime"]) < time()) {
  5099. throw new GeneralException("", "营销活动已结束,置顶无效!");
  5100. }
  5101. $sqlTemp = ""; //不设置remark避免覆盖
  5102. $sqlTemp .= " update biz_market_activity set updatetime=:nowtime,istop=0 where istop=1;";
  5103. $sqlTemp .= " update biz_market_activity set updatetime=:nowtime,istop=1 where id=:id;";
  5104. $backdata = pdo_query($sqlTemp, array(":nowtime" => time(), ":id" => intval($bizId)));
  5105. return $backdata;
  5106. break;
  5107. case "topHandle":
  5108. $todo = isset($ajaxdata["todo"]) ? $ajaxdata["todo"] : $GPC["todo"];
  5109. if (empty($todo)) {
  5110. throw new GeneralException("", "没有传递必要的todo参数");
  5111. }
  5112. $bizIds = isset($ajaxdata["bizIds"]) ? $ajaxdata["bizIds"] : $GPC["bizIds"];
  5113. $sqlParam = array();
  5114. $sqlParam[":nowtime"] = time();
  5115. $query = "";
  5116. if (is_array($bizIds)) {
  5117. $query = "and id in(" . implode(",", $bizIds) . ") ";
  5118. }
  5119. switch (trim($todo)) {
  5120. case "set":
  5121. $sqlParam[":istop"] = 1;
  5122. break;
  5123. case "unset":
  5124. $sqlParam[":istop"] = 0;
  5125. break;
  5126. default:
  5127. throw new GeneralException("", "不支持的todo");
  5128. }
  5129. $sqlTemp = ""; //不设置remark避免覆盖
  5130. $sqlTemp .= " update biz_market_activity set updatetime=:nowtime,istop=:istop where 1=1 {$query};";
  5131. $backdata = pdo_query($sqlTemp, $sqlParam);
  5132. return $backdata;
  5133. break;
  5134. case "upsert":
  5135. $bizData = isset($ajaxdata["bizData"]) ? $ajaxdata["bizData"] : $GPC["bizData"];
  5136. if (empty($bizData)) {
  5137. throw new GeneralException("", "没有传递必要的bizData参数");
  5138. }
  5139. /***字段参数收集并校验**start***/
  5140. $saveData = array();
  5141. if (isset($bizData["profile_photo"])) {
  5142. $saveData["profile_photo"] = trim($bizData["profile_photo"]);
  5143. }
  5144. if (isset($bizData["list_photos"])) {
  5145. $saveData["list_photos"] = json_encode($bizData["list_photos"]);
  5146. }
  5147. if (isset($bizData["detail_photos"])) {
  5148. $saveData["detail_photos"] = json_encode($bizData["detail_photos"]);
  5149. }
  5150. if (isset($bizData["title"])) {
  5151. $saveData["title"] = trim($bizData["title"]);
  5152. }
  5153. if (isset($bizData["begin_datetime"])) {
  5154. $saveData["begin_datetime"] = intval(strtotime(date("Y-m-d H:i:s", strtotime($bizData["begin_datetime"]))));
  5155. }
  5156. if (isset($bizData["finish_datetime"])) {
  5157. $saveData["finish_datetime"] = intval(strtotime(date("Y-m-d H:i:s", strtotime($bizData["finish_datetime"]))));
  5158. }
  5159. if (isset($bizData["total"])) {
  5160. $saveData["total"] = intval($bizData["total"]);
  5161. }
  5162. if (isset($bizData["price"])) {
  5163. $saveData["price"] = floatval($bizData["price"]);
  5164. }
  5165. if (isset($bizData["company_name"])) {
  5166. $saveData["company_name"] = trim($bizData["company_name"]);
  5167. }
  5168. if (isset($bizData["linker_name"])) {
  5169. $saveData["linker_name"] = trim($bizData["linker_name"]);
  5170. }
  5171. if (isset($bizData["linker_phone"])) {
  5172. $saveData["linker_phone"] = trim($bizData["linker_phone"]);
  5173. }
  5174. if (isset($bizData["activity_addr"])) {
  5175. $saveData["activity_addr"] = json_encode($bizData["activity_addr"]);
  5176. }
  5177. if (isset($bizData["activity_addr1"])) {
  5178. $saveData["activity_addr1"] = trim($bizData["activity_addr1"]);
  5179. }
  5180. if (isset($bizData["addr_lng"])) {
  5181. $saveData["addr_lng"] = trim($bizData["addr_lng"]);
  5182. }
  5183. if (isset($bizData["addr_lat"])) {
  5184. $saveData["addr_lat"] = trim($bizData["addr_lat"]);
  5185. }
  5186. if (isset($bizData["biz_desc"])) {
  5187. $saveData["biz_desc"] = trim($bizData["biz_desc"]);
  5188. }
  5189. if (isset($bizData["biz_remark"])) {
  5190. $saveData["biz_remark"] = trim($bizData["biz_remark"]);
  5191. }
  5192. if (isset($bizData["group_qrurl"])) {
  5193. $saveData["group_qrurl"] = trim($bizData["group_qrurl"]);
  5194. }
  5195. if (isset($bizData["istop"])) {
  5196. $saveData["istop"] = intval($bizData["istop"]);
  5197. }
  5198. /***字段参数收集并校验**finish***/
  5199. $sqlParam = array();
  5200. $sqlTemp = "";
  5201. if (intval($bizData["id"]) <= 0) {
  5202. $saveData["createtime"] = time();
  5203. $saveData["createuserid"] = intval($baseUser["id"]);
  5204. $upsertSet = pdo_buildSetSQL("", $saveData);
  5205. $sqlParam += $upsertSet["params"]; //合并参数集合
  5206. $sqlTemp .= " insert into biz_market_activity set " . $upsertSet["fields"] . ";";
  5207. $sqlTemp .= " set @bizid=LAST_INSERT_ID();";
  5208. } else {
  5209. $oldData = pdo_fetch("select * from biz_market_activity where id=" . intval($bizData["id"]));
  5210. if (empty($oldData)) {
  5211. throw new GeneralException("", "此id对应的记录不存在,请核查bizId是否正确!");
  5212. }
  5213. if (intval($oldData["deleted"]) != 0) {
  5214. throw new GeneralException("", "此记录已删除了,请核查后再处理!");
  5215. }
  5216. $saveData["remark"] = "[" . date("Y-m-d H:i:s", time()) . "] 更新 \n" . trim($oldData["remark"]);
  5217. $saveData["updatetime"] = time();
  5218. $saveData["updateuserid"] = intval($baseUser["id"]);
  5219. $upsertSet = pdo_buildSetSQL("", $saveData);
  5220. $sqlParam += $upsertSet["params"];
  5221. $sqlTemp .= " update biz_market_activity set " . $upsertSet["fields"] . " ";
  5222. $sqlTemp .= " where id=" . intval($bizData["id"]) . ";";
  5223. $sqlTemp .= " set @bizid=" . intval($bizData["id"]) . ";";
  5224. }
  5225. $sqlTemp .= " select * from biz_market_activity where id=@bizid;";
  5226. $dataset = pdo_query3($sqlTemp, $sqlParam);
  5227. $backdata = $dataset[count($dataset) - 1][0];
  5228. return $backdata;
  5229. break;
  5230. case "delete":
  5231. $bizId = isset($ajaxdata["bizId"]) ? $ajaxdata["bizId"] : $GPC["bizId"];
  5232. if (empty($bizId)) {
  5233. throw new GeneralException("", "没有传递必要的bizId参数");
  5234. }
  5235. $reason = isset($ajaxdata["reason"]) ? $ajaxdata["reason"] : $GPC["reason"];
  5236. //if (empty($reason)) throw new GeneralException("", "下架必须输入要原因!");
  5237. $activity = pdo_fetch("select * from biz_market_activity where id=" . intval($bizId));
  5238. if (empty($activity)) {
  5239. throw new GeneralException("", "此id对应的记录不存在,请核查bizId是否正确!");
  5240. }
  5241. if (intval($activity["deleted"]) != 0) {
  5242. throw new GeneralException("", "信息已删除了,请核查后再处理!");
  5243. }
  5244. $backdata = pdo_query("update biz_market_activity set updatetime=:nowtime, `deleted`=1, remark=concat(:remark,ifnull(remark,''))
  5245. where id=:id;", array(
  5246. ":nowtime" => time(), ":remark" => "[" . date("Y-m-d H:i:s", time()) . "] 删除 $reason\n", ":id" => intval($bizId),
  5247. ));
  5248. return $backdata;
  5249. break;
  5250. case "dropdown":
  5251. $bizId = isset($ajaxdata["bizId"]) ? $ajaxdata["bizId"] : $GPC["bizId"];
  5252. if (empty($bizId)) {
  5253. throw new GeneralException("", "没有传递必要的bizId参数");
  5254. }
  5255. $reason = isset($ajaxdata["reason"]) ? $ajaxdata["reason"] : $GPC["reason"];
  5256. //if (empty($reason)) throw new GeneralException("", "下架必须输入要原因!");
  5257. $activity = pdo_fetch("select * from biz_market_activity where id=" . intval($bizId));
  5258. if (empty($activity)) {
  5259. throw new GeneralException("", "此id对应的记录不存在,请核查bizId是否正确!");
  5260. }
  5261. if (intval($activity["status"]) != 0) {
  5262. throw new GeneralException("", "已下架了,请核查后再处理!");
  5263. }
  5264. $backdata = pdo_query("update biz_market_activity set updatetime=:nowtime, `status`=4, remark=concat(:remark,ifnull(remark,''))
  5265. where id=:id;", array(
  5266. ":nowtime" => time(), ":remark" => "[" . date("Y-m-d H:i:s", time()) . "] 手工下架 $reason\n", ":id" => intval($bizId),
  5267. ));
  5268. return $backdata;
  5269. break;
  5270. case "enroll":
  5271. $activityId = isset($ajaxdata["activityId"]) ? $ajaxdata["activityId"] : $GPC["activityId"];
  5272. $activity = pdo_fetch("select * from biz_market_activity where id=" . intval($activityId));
  5273. if (empty($activity)) {
  5274. throw new GeneralException("", "此id对应的活动记录不存在,请核查activityId是否正确!");
  5275. }
  5276. if (intval($activity["deleted"]) != 0) {
  5277. throw new GeneralException("", "信息已删除了,请核查后再处理!");
  5278. }
  5279. if (intval($activity["finish_datetime"]) < time()) {
  5280. throw new GeneralException("HasLater", "活动已过期,无法报名!");
  5281. }
  5282. $order = pdo_fetch("select * from biz_market_activity_order
  5283. where `status`>=1 and market_activityid=" . intval($activityId) . " and biz_workerid=" . intval($bizWorker["id"]) . "");
  5284. if (!empty($order)) {
  5285. throw new GeneralException("HasErolled", "您已成功报名此活动,不能重复报名!");
  5286. }
  5287. $accountInfo = bizbase_workerAccountInfo($bizWorker);
  5288. $balance = round(floatval($accountInfo["balance"]), 2);
  5289. $minaCode = isset($ajaxdata["minaCode"]) ? $ajaxdata["minaCode"] : $GPC["minaCode"];
  5290. $params = array("activity" => $activity, "balance" => $balance, "bizWorker" => $bizWorker, "minaCode" => $minaCode);
  5291. $backdata = biz_flkForMActivity($activity["id"], $params, function ($params) {
  5292. $activity = $params["activity"];
  5293. $money_balance = $params["balance"];
  5294. $bizWorker = $params["bizWorker"];
  5295. $minaCode = $params["minaCode"];
  5296. $erollTotal = pdo_fetchcolumn("select count(*) from biz_market_activity_order
  5297. where market_activityid=" . intval($activity["id"]) . " and `status`>=1");
  5298. if (intval($erollTotal) >= intval($activity["total"])) {
  5299. throw new GeneralException("overflow", "此活动已报满,无法报名了!");
  5300. }
  5301. $nowPayMoney = round(floatval($activity["price"] - $money_balance), 2);
  5302. if ($nowPayMoney <= 0) {
  5303. $nowPayMoney = 0;
  5304. }
  5305. //过滤掉0收支明细
  5306. $sqlParam = array();
  5307. $sqlParam[":nowtime"] = time();
  5308. $sqlParam[":market_activityid"] = $activity["id"];
  5309. $sqlParam[":biz_workerid"] = intval($bizWorker["id"]);
  5310. $sqlParam[":price"] = round(floatval($activity["price"]), 2);
  5311. $sqlParam[":remark"] = "营销活动支付\n";
  5312. $sqlTemp = "";
  5313. $sqlTemp .= " set @handle_status=0; ";
  5314. $sqlTemp .= " set @handle_id=0; ";
  5315. $sqlTemp .= " select @handle_id:=id,@handle_status:=`status` from biz_market_activity_order where biz_workerid=:biz_workerid and market_activityid=:market_activityid limit 1;";
  5316. $sqlTemp .= " insert into biz_market_activity_order ( `createtime`,`market_activityid`, `biz_workerid`, `price`,paytag,`status`, remark )";
  5317. $sqlTemp .= " select :nowtime, :market_activityid, :biz_workerid, :price , 0, 0,:remark from dual where ifnull(@handle_id,0)=0;";
  5318. $sqlTemp .= " update biz_market_activity_order set updatetime=:nowtime, `price`=:price, remark=concat(:remark,remark) where ifnull(@handle_id,0)<>0 and biz_workerid=:biz_workerid and market_activityid=:market_activityid;";
  5319. $sqlTemp .= " select @handle_id:=id,@paytag:=paytag from biz_market_activity_order where biz_workerid=:biz_workerid and market_activityid=:market_activityid limit 1;";
  5320. $sqlParam[":type"] = 0;
  5321. $sqlParam[":money"] = $nowPayMoney;
  5322. $sqlParam[":biz_catalog"] = 2;
  5323. $sqlTemp .= " insert into biz_worker_account set createtime=:nowtime";
  5324. $sqlTemp .= " ,biz_workerid=:biz_workerid, biz_roletype=0, biz_userid=:biz_workerid ";
  5325. $sqlTemp .= " ,type=:type, `money`=:money";
  5326. $sqlTemp .= " ,biz_catalog=:biz_catalog, biz_id=@handle_id";
  5327. $sqlTemp .= " ,biz_idtag=concat('MAID',@handle_id,'EE',@paytag)";
  5328. $sqlTemp .= " ,`status`=0, remark=:remark;";
  5329. $sqlTemp .= " select * from biz_worker_account where id=LAST_INSERT_ID();";
  5330. $dataset = pdo_query3($sqlTemp, $sqlParam);
  5331. $bizInfo = $dataset[count($dataset) - 1][0];
  5332. if (empty($bizInfo)) {
  5333. throw new GeneralException("", "构建预支付订单异常");
  5334. }
  5335. $payBizCatalog = "3"; //3-会员购买营销活动
  5336. $payBizId = $bizInfo["id"];
  5337. if ($nowPayMoney <= 0) {
  5338. bizbase_paySuccess($payBizCatalog, $payBizId, false);
  5339. return array("payResult" => true);
  5340. } else {
  5341. //---------------------------------------
  5342. if (empty(trim($minaCode))) {
  5343. throw new GeneralException("", "没有传递必要的minaCode参数");
  5344. }
  5345. $payScene = "JSAPI";
  5346. $prePayArgs = array(
  5347. "payBackBizCatalog" => $payBizCatalog,
  5348. "payBackBizId" => $payBizId,
  5349. "payScene" => $payScene,
  5350. );
  5351. require_once WEB_PHY_ROOT . "/base/wxsrv.php";
  5352. $resObj = bizwx_fetchMinaOpenidCore(SUBSYS_LABOUR_MINA);
  5353. $wxmina_appid = $resObj["wxmina_appid"];
  5354. $wxmina_openid = $resObj["openid"];
  5355. $bizArgs = array(
  5356. "minaCode" => $minaCode,
  5357. "bizInfo" => $bizInfo,
  5358. "wxmina_appid" => $wxmina_appid,
  5359. "wxmina_openid" => $wxmina_openid,
  5360. );
  5361. try {
  5362. $prePayInfo = bizbase_mactivityPayCore($prePayArgs, $bizArgs);
  5363. } catch (Throwable $ex) {
  5364. $errMsg = $ex->getMessage();
  5365. if (mb_strpos($errMsg, "201 商户订单号重复") === false) {
  5366. throw $ex;
  5367. } else {
  5368. require_once WEB_PHY_ROOT . "/base/wxsrv.php";
  5369. $result = weixin_ordercloseV3($bizInfo["biz_idtag"]);
  5370. $dataset = pdo_query3("
  5371. update biz_market_activity_order set updatetime=:nowtime
  5372. ,paytag=ifnull(paytag,0)+1
  5373. ,remark=concat('更新支付订单号后缀\n',ifnull(remark,''))
  5374. where id=:bmaoid;
  5375. select @paytag:=paytag from biz_market_activity_order where id=:bmaoid;
  5376. update biz_worker_account set updatetime=:nowtime
  5377. ,biz_idtag=concat('MAID',:bmaoid,'EE',@paytag)
  5378. ,remark=concat('更新支付订单号后缀\n',ifnull(remark,''))
  5379. where id=:bizid;
  5380. select * from biz_worker_account where id=:bizid;", array(
  5381. ":nowtime" => time(),
  5382. ":bmaoid" => intval($bizInfo["biz_id"]),
  5383. ":bizid" => intval($bizInfo["id"]),
  5384. ));
  5385. $bizInfo = $dataset[count($dataset) - 1][0];
  5386. $bizArgs["bizInfo"] = $bizInfo;
  5387. $prePayInfo = bizbase_mactivityPayCore($prePayArgs, $bizArgs);
  5388. }
  5389. }
  5390. $prePayInfo = array_merge($prePayArgs, $prePayInfo);
  5391. return array(
  5392. "moneyBalance" => $money_balance,
  5393. "payMoney" => $nowPayMoney,
  5394. "prePayInfo" => $prePayInfo,
  5395. );
  5396. }
  5397. });
  5398. return $backdata;
  5399. break;
  5400. case "fetchEnrollInfo":
  5401. $enrollId = isset($ajaxdata["enrollId"]) ? $ajaxdata["enrollId"] : $GPC["enrollId"];
  5402. if (empty($enrollId)) {
  5403. throw new GeneralException("", "没有传递必要的enrollId参数");
  5404. }
  5405. $sqlSelectExt = "";
  5406. $nowLngLat = isset($ajaxdata["nowLngLat"]) ? $ajaxdata["nowLngLat"] : $GPC["nowLngLat"];
  5407. if (empty($nowLngLat) || !preg_match("/^\d+\.\d+,\d+\.\d+$/", $nowLngLat)) {
  5408. $nowLngLat = "";
  5409. } else {
  5410. $nowlng = floatval(explode(",", $nowLngLat)[0]);
  5411. $nowlat = floatval(explode(",", $nowLngLat)[1]);
  5412. $sqlSelectExt .= " ,(st_distance_sphere(point(CAST(bma.addr_lng AS decimal(11,8)),CAST(bma.addr_lat AS decimal(11,8))),point(CAST({$nowlng} AS decimal(11,8)),CAST({$nowlat} AS decimal(11,8))))) as distance ";
  5413. }
  5414. $enrollInfo = pdo_fetch("select bmao.*
  5415. ,bma.price,bma.title,bma.begin_datetime,bma.finish_datetime,bma.activity_addr,bma.linker_phone
  5416. ,bma.list_photos,bma.detail_photos
  5417. ,apa.result_level as appraiseLevel,apa.result_desc as appraiseRemark
  5418. {$sqlSelectExt}
  5419. from biz_market_activity_order bmao
  5420. left join biz_market_activity bma on bma.id=bmao.market_activityid
  5421. left join biz_appraisal apa on apa.biz_catalog=0 and apa.fromerid=bmao.biz_workerid and apa.toerid=0 and apa.biz_id=bmao.id
  5422. where bmao.id=" . intval($enrollId));
  5423. if (empty($enrollInfo)) {
  5424. throw new GeneralException("", "此id对应的记录不存在,请核查bizId是否正确!");
  5425. }
  5426. if (intval($enrollInfo["deleted"]) != 0) {
  5427. throw new GeneralException("", "信息已删除了,请核查后再处理!");
  5428. }
  5429. $enrollInfo["list_photos"] = json_decode($enrollInfo["list_photos"], true);
  5430. $enrollInfo["detail_photos"] = json_decode($enrollInfo["detail_photos"], true);
  5431. $enrollInfo["begin_datetime"] = date("Y-m-d H:i:s", $enrollInfo["begin_datetime"]);
  5432. $enrollInfo["finish_datetime"] = date("Y-m-d H:i:s", $enrollInfo["finish_datetime"]);
  5433. $enrollInfo["price"] = round($enrollInfo["price"], 2);
  5434. $enrollInfo["activity_addr"] = json_decode($enrollInfo["activity_addr"], true);
  5435. //------------------------------------------------------------
  5436. bizbase_mactivityOrderStatus($enrollInfo);
  5437. $enrollInfo["paytime"] = date("Y-m-d H:i:s", $enrollInfo["paytime"]);
  5438. $enrollInfo["remark"] = trim(explode("\n", $enrollInfo["remark"])[0]);
  5439. return $enrollInfo;
  5440. case "appraiseByWorker":
  5441. $enrollId = isset($ajaxdata["enrollId"]) ? $ajaxdata["enrollId"] : $GPC["enrollId"];
  5442. if (empty($enrollId)) {
  5443. throw new GeneralException("", "没有传递必要的enrollId参数");
  5444. }
  5445. $enrollInfo = pdo_fetch("select bmao.*
  5446. ,bma.price,bma.title,bma.begin_datetime,bma.finish_datetime,bma.activity_addr,bma.linker_phone
  5447. ,bma.list_photos,bma.detail_photos
  5448. from biz_market_activity_order bmao
  5449. left join biz_market_activity bma on bma.id=bmao.market_activityid
  5450. where bmao.id=" . intval($enrollId));
  5451. if (empty($enrollInfo)) {
  5452. throw new GeneralException("", "此id对应的记录不存在,请核查bizId是否正确!");
  5453. }
  5454. if (intval($enrollInfo["deleted"]) != 0) {
  5455. throw new GeneralException("", "信息已删除了,请核查后再处理!");
  5456. }
  5457. if (intval($enrollInfo["biz_workerid"]) != intval($bizWorker["id"])) {
  5458. throw new GeneralException("", "此活动报名记录不是您的,请核查后再处理!");
  5459. }
  5460. bizbase_mactivityOrderStatus($enrollInfo);
  5461. if ($enrollInfo["status"] != 2) {
  5462. throw new GeneralException("", "不是待评价状态,不能进行评价!");
  5463. }
  5464. $appraiseLevel = isset($ajaxdata["appraiseLevel"]) ? $ajaxdata["appraiseLevel"] : $GPC["appraiseLevel"];
  5465. $appraiseRemark = isset($ajaxdata["appraiseRemark"]) ? $ajaxdata["appraiseRemark"] : $GPC["appraiseRemark"];
  5466. $sqlParam = array();
  5467. $sqlParam[":nowtime"] = time();
  5468. $sqlParam[":biz_catalog"] = 0; //0-会员对活动评价;1-会员对工作过程雇主评价;2-雇主商家对会员工作过程评价;
  5469. $sqlParam[":fromerid"] = intval($bizWorker["id"]);
  5470. $sqlParam[":toerid"] = 0;
  5471. $sqlParam[":biz_id"] = intval($enrollId);
  5472. $sqlParam[":result_level"] = intval($appraiseLevel);
  5473. $sqlParam[":result_desc"] = trim($appraiseRemark);
  5474. $sqlParam[":remark"] = "[" . date("Y-m-d H:i:s", time()) . "] 会员对活动评价\n";
  5475. $sqlTemp = "";
  5476. $sqlTemp .= " update biz_market_activity_order set updatetime=:nowtime, `status`=3, remark=concat(:remark,remark) where id=:biz_id;";
  5477. $sqlTemp .= " set @handle_id=0; ";
  5478. $sqlTemp .= " select @handle_id:=id from biz_appraisal where biz_catalog=:biz_catalog and biz_id=:biz_id limit 1;";
  5479. $sqlTemp .= " insert into biz_appraisal ( `createtime`,`biz_catalog`, biz_id,`fromerid`, `toerid`, `result_level`, result_desc, remark)";
  5480. $sqlTemp .= " select :nowtime, :biz_catalog,:biz_id, :fromerid, :toerid , :result_level,:result_desc,:remark from dual where ifnull(@handle_id,0)=0;";
  5481. $sqlTemp .= " update biz_appraisal set updatetime=:nowtime, fromerid=:fromerid, toerid=:toerid, `result_level`=:result_level, result_desc=:result_desc, remark=concat(:remark,remark) where ifnull(@handle_id,0)<>0 and id=ifnull(@handle_id,0);";
  5482. $backdata = pdo_query3($sqlTemp, $sqlParam);
  5483. return $backdata;
  5484. default:
  5485. throw new GeneralException("", "不支持的handleMode!");
  5486. }
  5487. }
  5488. function bizbase_mactivityPayCore($prePayArgs, $bizArgs)
  5489. {
  5490. require_once WEB_PHY_ROOT . "/base/wxsrv.php";
  5491. $prePayInfo = weixin_prepayBuildV3($prePayArgs, $bizArgs, function ($bizCatalog, $bizId, $bizArgs) {
  5492. $bizInfo = $bizArgs["bizInfo"];
  5493. $wxmina_appid = $bizArgs["wxmina_appid"];
  5494. $wxmina_openid = $bizArgs["wxmina_openid"];
  5495. //---------------------------------------
  5496. $payTotal = round(floatval($bizInfo["money"]), 2);
  5497. if ($payTotal <= 0) {
  5498. throw new GeneralException("", "购买金额竟然小于等于0");
  5499. }
  5500. $payTotal = $payTotal * 100; //转为分
  5501. //---------------------------------------
  5502. $sqlParam = array();
  5503. $sqlParam[":id"] = intval($bizInfo["id"]);
  5504. $sqlParam[":wxmina_appid"] = $wxmina_appid;
  5505. $sqlParam[":wxmina_openid"] = $wxmina_openid;
  5506. $outtradeno = substr(date('YmdHiis') . md5(uniqid()), 0, 32);
  5507. $sqlParam[":outtradeno"] = $outtradeno;
  5508. $sqlTemp = " update biz_worker_account set";
  5509. $sqlTemp .= " wxmina_appid=:wxmina_appid,wxmina_openid=:wxmina_openid,weixin_outtradeno=:outtradeno";
  5510. $sqlTemp .= " where id=:id; ";
  5511. $dataset = pdo_query3($sqlTemp, $sqlParam);
  5512. //---------------------------------------
  5513. $prePayInfo = array();
  5514. $prePayInfo["appid"] = $wxmina_appid;
  5515. $prePayInfo["mchId"] = WeiXinPay_mchId;
  5516. $prePayInfo["mch_paykeyV2"] = WeiXinPay_apiKey;
  5517. $prePayInfo["mch_paykeyV3"] = WeiXinPay_apiKeyV3;
  5518. //$prePayInfo["out_trade_no"] = $bizInfo["biz_idtag"];
  5519. $prePayInfo["out_trade_no"] = $outtradeno;
  5520. $prePayInfo["total"] = "{$payTotal}";
  5521. $prePayInfo["description"] = "营销活动支付业务";
  5522. $prePayInfo["openid"] = $wxmina_openid;
  5523. return $prePayInfo;
  5524. });
  5525. return $prePayInfo;
  5526. }
  5527. function bizbase_mactivityStatus(&$data)
  5528. {
  5529. $nowday11 = strtotime(date("Y-m-d", time()));
  5530. $nowday22 = strtotime(date("Y-m-d 23:59:59", time()));
  5531. $nextday11 = strtotime("+1 day", strtotime(date("Y-m-d", time())));
  5532. $nextday22 = strtotime("+1 day", strtotime(date("Y-m-d 23:59:59", time())));
  5533. $nextnextday11 = strtotime("+2 day", strtotime(date("Y-m-d", time())));
  5534. $nextnextday22 = strtotime("+2 day", strtotime(date("Y-m-d 23:59:59", time())));
  5535. if (intval($data["begin_datetime"]) >= $nowday22) {
  5536. $data["statusACode"] = 1;
  5537. $data["statusAName"] = "未开始";
  5538. return;
  5539. }
  5540. // if(intval($data["begin_datetime"])>=$nextday11 && intval($data["begin_datetime"])<=$nextday22){
  5541. // $data["statusACode"]=2;
  5542. // $data["statusAName"]="待开始";
  5543. // return;
  5544. // }
  5545. if ((intval($data["begin_datetime"]) <= $nowday11
  5546. || (intval($data["begin_datetime"]) >= $nowday11
  5547. && intval($data["begin_datetime"]) <= $nowday22
  5548. )) && intval($data["finish_datetime"]) > time()) {
  5549. $data["statusACode"] = 2;
  5550. $data["statusAName"] = "进行中";
  5551. return;
  5552. }
  5553. if (intval($data["finish_datetime"]) < time()) {
  5554. $data["statusACode"] = 3;
  5555. $data["statusAName"] = "已完成";
  5556. return;
  5557. }
  5558. }
  5559. function bizbase_mactivityOrderStatus(&$data)
  5560. {
  5561. switch (intval($data["status"])) {
  5562. case 0:
  5563. $data["statusName"] = "已报名下单待支付";
  5564. break;
  5565. case 1:
  5566. $data["statusName"] = "已支付待使用";
  5567. if (intval($data["finish_datetime"]) < time()) {
  5568. $data["status"] = 2;
  5569. $data["statusName"] = "已使用待评价";
  5570. }
  5571. break;
  5572. case 2:
  5573. $data["statusName"] = "已使用待评价";
  5574. break;
  5575. case 3:
  5576. $data["statusName"] = "已评价";
  5577. break;
  5578. }
  5579. return $data;
  5580. }
  5581. function bizbase_mactivityAboutQuery($fromSubSystem, $baseUser, $bizUser, $handleMode, $pageIndex, $pageSize, $ajaxdata, $GPC)
  5582. {
  5583. if (intval($baseUser["subsystem"]) == SUBSYS_LABOUR_MINA) {
  5584. $bizWorker = $bizUser;
  5585. }
  5586. if (intval($baseUser["subsystem"]) == SUBSYS_CAPITAL_MINA) {
  5587. $bizTrader = $bizUser;
  5588. }
  5589. if (intval($baseUser["subsystem"]) == SUBSYS_CAPITAL2_MINA) {
  5590. $bizTrader2 = $bizUser;
  5591. }
  5592. switch ($handleMode) {
  5593. case "fetchallByPlater":
  5594. case "fetchallByWorker":
  5595. case "fetchallByPublic":
  5596. $sqlSelectExt = "";
  5597. $sqlParam = array();
  5598. $query = isset($ajaxdata["query"]) ? $ajaxdata["query"] : $GPC["query"];
  5599. if (empty($query) && !is_array($query)) { //验证一下query信息集
  5600. $query = " and 1=1 ";
  5601. } else {
  5602. $queryNew = " and 1=1 ";
  5603. foreach ($query as $fdName => $fdValue) {
  5604. switch ($fdName) {
  5605. case "title":
  5606. if (empty(trim($fdValue))) {
  5607. continue;
  5608. }
  5609. $paramName = ":qy_title";
  5610. $queryNew .= " and (bma.title like concat('%',{$paramName},'%') ) ";
  5611. $sqlParam[$paramName] = $fdValue;
  5612. break;
  5613. case "linkphone":
  5614. if (empty(trim($fdValue))) {
  5615. continue;
  5616. }
  5617. $paramName = ":qy_linkphone";
  5618. $queryNew .= " and (bma.linker_phone like concat('%',{$paramName},'%') ) ";
  5619. $sqlParam[$paramName] = $fdValue;
  5620. break;
  5621. case "startDate":
  5622. if (empty(trim($fdValue))) {
  5623. continue;
  5624. }
  5625. $queryNew .= " and bma.begin_datetime>=" . strtotime(date("Y-m-d", strtotime($fdValue))) . " and bma.begin_datetime<=" . strtotime(date("Y-m-d 23:59:59", strtotime($fdValue))) . " ";
  5626. break;
  5627. case "status":
  5628. $nowday11 = strtotime(date("Y-m-d", time()));
  5629. $nowday22 = strtotime(date("Y-m-d 23:59:59", time()));
  5630. $nextday11 = strtotime("+1 day", strtotime(date("Y-m-d", time())));
  5631. $nextday22 = strtotime("+1 day", strtotime(date("Y-m-d 23:59:59", time())));
  5632. $nextnextday11 = strtotime("+2 day", strtotime(date("Y-m-d", time())));
  5633. $nextnextday22 = strtotime("+2 day", strtotime(date("Y-m-d 23:59:59", time())));
  5634. $sel_status1 = " and bma.begin_datetime>=" . $nowday22 . " ";
  5635. $sel_status2 = " and bma.begin_datetime>=" . $nextday11 . " and bma.begin_datetime<=" . $nextday22 . " ";
  5636. $sel_status3 = " and (bma.begin_datetime<={$nowday11} or (bma.begin_datetime>={$nowday11} and bma.begin_datetime<={$nowday22})) ";
  5637. $sel_status3 .= " and bma.finish_datetime>" . time() . " and bma.`status`<=0 ";
  5638. $sel_status4 = " and (bma.finish_datetime<" . time() . " or bma.`status`>2) ";
  5639. $sel_status5 = " and ( ( 1=1 {$sel_status1} ) or ( 1=1 {$sel_status2} ) or ( 1=1 {$sel_status3} ) )";
  5640. switch (intval($fdValue)) {
  5641. case 1:
  5642. $queryNew .= $sel_status1;
  5643. break;
  5644. case 2:
  5645. $queryNew .= $sel_status2;
  5646. break;
  5647. case 3:
  5648. $queryNew .= $sel_status3;
  5649. break;
  5650. case 4:
  5651. $queryNew .= $sel_status4;
  5652. break;
  5653. case 5:
  5654. $queryNew .= $sel_status5;
  5655. break;
  5656. }
  5657. $sqlSelectExt .= ",(case when (1=1 {$sel_status1}) then 1 ";
  5658. $sqlSelectExt .= " when (1=1 {$sel_status2}) then 2 ";
  5659. $sqlSelectExt .= " when (1=1 {$sel_status3}) then 3 ";
  5660. $sqlSelectExt .= " when (1=1 {$sel_status4}) then 4 ";
  5661. $sqlSelectExt .= " when (1=1 {$sel_status5}) then 5 ";
  5662. $sqlSelectExt .= " else '' end) as statusCodeExt";
  5663. break;
  5664. }
  5665. }
  5666. $query = $queryNew;
  5667. }
  5668. if (!empty($bizWorker)) {
  5669. if ($handleMode == "fetchallByWorker") {
  5670. //$query .= " and (select count(*) from biz_market_activity_order where bmao.market_activityid=bma.id and bmao.biz_workerid=" . intval($bizWorker["id"]).")<=0 ";
  5671. }
  5672. }
  5673. $orderby = isset($ajaxdata["orderby"]) ? $ajaxdata["orderby"] : $GPC["orderby"];
  5674. switch (intval($orderby)) {
  5675. case 1: //1-人数倒序
  5676. $orderby = " order by bma.istop desc,bma.total desc ";
  5677. break;
  5678. case 2: //2-距离倒序
  5679. $nowLngLat = isset($ajaxdata["nowLngLat"]) ? $ajaxdata["nowLngLat"] : $GPC["nowLngLat"];
  5680. if (empty($nowLngLat) || !preg_match("/^\d+\.\d+,\d+\.\d+$/", $nowLngLat)) {
  5681. throw new GeneralException("", "没有传递必要的nowLngLat参数,或者经纬度格式不正确(经度,纬度)");
  5682. }
  5683. $sqlParam[":nowlng"] = floatval(explode(",", $nowLngLat)[0]);
  5684. $sqlParam[":nowlat"] = floatval(explode(",", $nowLngLat)[1]);
  5685. $sqlSelectExt .= ' ,(st_distance_sphere(point(CAST(bma.addr_lng AS decimal(11,8)),CAST(bma.addr_lat AS decimal(11,8))),point(CAST(:nowlng AS decimal(11,8)),CAST(:nowlat AS decimal(11,8))))) as distance ';
  5686. $orderby = " order by distance asc ";
  5687. break;
  5688. default: //0-默认置顶倒序,时间倒序
  5689. $orderby = " order by bma.istop desc,bma.id desc ";
  5690. break;
  5691. }
  5692. //构建sql串
  5693. $sqlBody = "";
  5694. $sqlBody .= " from biz_market_activity bma ";
  5695. $sqlBody .= " left join biz_market_activity_order bmao on bmao.market_activityid=bma.id ";
  5696. $sqlBody .= " left join biz_worker wk on wk.id=bmao.biz_workerid ";
  5697. $sqlBody .= " left join base_user bu on bu.id=wk.base_userid ";
  5698. $sqlBody .= " where 1=1 " . $query;
  5699. $sqlBody .= " group by bma.id ";
  5700. //查询sql及统计sql
  5701. $sqlFetch = " select bma.* ";
  5702. $sqlFetch .= " ,sum(case when bmao.`status`>=0 then 1 else 0 end) as erolled_total";
  5703. $sqlFetch .= " ,sum(case when bmao.`status`>=1 then 1 else 0 end) as payed_total";
  5704. $sqlFetch .= " ,sum(case when bmao.`status`>=2 then 1 else 0 end) as used_total";
  5705. $sqlFetch .= " ,sum(case when bmao.`status`>=3 then 1 else 0 end) as finished_total";
  5706. $sqlFetch .= " {$sqlSelectExt} {$sqlBody} {$orderby} ";
  5707. $exportExcel = isset($ajaxdata["exportExcel"]) ? $ajaxdata["exportExcel"] : $GPC["exportExcel"];
  5708. if (trim($exportExcel) != "true") { //正常输出
  5709. $start = (intval($pageIndex) - 1) * $pageSize;
  5710. $sqlFetch .= " limit {$start},{$pageSize} ";
  5711. $pageData = pdo_fetchall($sqlFetch, $sqlParam);
  5712. foreach ($pageData as &$activity) { //数据转换/映射
  5713. $activity["list_photos"] = json_decode($activity["list_photos"], true);
  5714. $activity["detail_photos"] = json_decode($activity["detail_photos"], true);
  5715. $activity["begin_datetime"] = date("Y-m-d H:i:s", $activity["begin_datetime"]);
  5716. $activity["finish_datetime"] = date("Y-m-d H:i:s", $activity["finish_datetime"]);
  5717. $activity["price"] = round($activity["price"], 2);
  5718. $activity["activity_addr"] = json_decode($activity["activity_addr"], true);
  5719. $activity["remark"] = trim(explode("\n", $activity["remark"])[0]);
  5720. }
  5721. unset($sqlParam[":nowlng"]);
  5722. unset($sqlParam[":nowlat"]);
  5723. $sqlSummary = " select count(*) as count from (select bma.id " . $sqlBody . " ) as temp;";
  5724. $sumData = pdo_fetch($sqlSummary, $sqlParam);
  5725. return array(
  5726. "pageData" => $pageData,
  5727. "count" => intval($sumData["count"]),
  5728. );
  5729. } else {
  5730. $nowlng = $sqlParam[":nowlng"];
  5731. $nowlat = $sqlParam[":nowlat"];
  5732. unset($sqlParam[":nowlng"]);
  5733. unset($sqlParam[":nowlat"]);
  5734. $sqlSummary = " select count(*) as count from (select bma.id " . $sqlBody . " ) as temp;";
  5735. $sumData = pdo_fetch($sqlSummary, $sqlParam);
  5736. $recordTotal = intval($sumData["count"]);
  5737. $pageTotal = ceil($recordTotal / $pageSize);
  5738. $sqlParam[":nowlng"] = $nowlng;
  5739. $sqlParam[":nowlat"] = $nowlat;
  5740. $args = array(
  5741. "pageIndex" => 0, "pageSize" => $pageSize, "pageTotal" => $pageTotal,
  5742. "sqlFetch" => $sqlFetch, "sqlParam" => $sqlParam,
  5743. );
  5744. $csvTitle = array("标题", "开始日期", "结束日期", "商家名称", "地址", "电话");
  5745. baseexcel_exportCsv("活动列表", $csvTitle, $args, function ($args) {
  5746. $pageIndex = intval($args["pageIndex"]) + 1;
  5747. $args["pageIndex"] = $pageIndex;
  5748. $pageSize = intval($args["pageSize"]);
  5749. $pageTotal = intval($args["pageTotal"]);
  5750. if ($pageIndex > $pageTotal) {
  5751. return false;
  5752. }
  5753. $sqlFetch = $args["sqlFetch"];
  5754. $sqlParam = $args["sqlParam"];
  5755. $start = (intval($pageIndex) - 1) * $pageSize;
  5756. $pageData111 = pdo_fetchall($sqlFetch . " limit {$start},{$pageSize} ", $sqlParam);
  5757. $pageData = array();
  5758. foreach ($pageData111 as &$activity) { //数据转换/映射
  5759. $activity_addr = json_decode($activity["activity_addr"], true);
  5760. $activity_addr22 = trim($activity_addr["country"]);
  5761. $activity_addr22 .= trim($activity_addr["province"]);
  5762. $activity_addr22 .= trim($activity_addr["city"]);
  5763. $activity_addr22 .= trim($activity_addr["district"]);
  5764. $activity_addr22 .= trim($activity_addr["street"]);
  5765. $activity_addr22 .= trim($activity_addr["streetNumber"]);
  5766. $activity_addr22 .= trim($activity_addr["town"]);
  5767. $activity_addr22 .= trim($activity_addr["village"]);
  5768. $pageData[] = array(
  5769. $activity["title"],
  5770. "\t" . date("Y-m-d H:i:s", $activity["begin_datetime"]),
  5771. "\t" . date("Y-m-d H:i:s", $activity["finish_datetime"]),
  5772. $activity["company_name"], $activity_addr22, "\t" . $activity["linker_phone"],
  5773. );
  5774. }
  5775. return array("pagedata" => $pageData, "args" => $args);
  5776. });
  5777. }
  5778. break;
  5779. case "fetchallSelf":
  5780. $sqlParam = array();
  5781. $query = isset($ajaxdata["query"]) ? $ajaxdata["query"] : $GPC["query"];
  5782. if (empty($query) && !is_array($query)) { //验证一下query信息集
  5783. $query = " and 1=1 ";
  5784. } else {
  5785. $queryNew = " and 1=1 ";
  5786. foreach ($query as $fdName => $fdValue) {
  5787. if (empty($fdName) || empty($fdValue)) {
  5788. continue;
  5789. }
  5790. switch ($fdName) {
  5791. case "title":
  5792. if (empty(trim($fdValue))) {
  5793. continue;
  5794. }
  5795. $paramName = ":qy_title";
  5796. $queryNew .= " and (bma.title like concat('%',{$paramName},'%') ) ";
  5797. $sqlParam[$paramName] = $fdValue;
  5798. break;
  5799. case "linkphone":
  5800. if (empty(trim($fdValue))) {
  5801. continue;
  5802. }
  5803. $paramName = ":qy_linkphone";
  5804. $queryNew .= " and (bma.linker_phone like concat('%',{$paramName},'%') ) ";
  5805. $sqlParam[$paramName] = $fdValue;
  5806. break;
  5807. case "status":
  5808. switch (intval($fdValue)) {
  5809. case 1:
  5810. $queryNew .= " and bmao.`status`=0 ";
  5811. break;
  5812. case 2:
  5813. $queryNew .= " and bmao.`status`=1 and bma.finish_datetime>" . time() . " ";
  5814. break;
  5815. case 3:
  5816. $queryNew .= " and (bmao.`status`=2 or (bmao.`status`=1 and bma.finish_datetime<" . time() . ")) ";
  5817. break;
  5818. case 4:
  5819. $queryNew .= " and bmao.`status`=3 ";
  5820. break;
  5821. }
  5822. break;
  5823. }
  5824. }
  5825. $query = $queryNew;
  5826. }
  5827. if (empty($bizWorker)) {
  5828. throw new GeneralException("", "只针对会员的方法!!");
  5829. }
  5830. $query .= " and bmao.biz_workerid=" . intval($bizWorker["id"]) . " ";
  5831. $orderby = isset($ajaxdata["orderby"]) ? $ajaxdata["orderby"] : $GPC["orderby"];
  5832. switch (intval($orderby)) {
  5833. case 1: //1-价钱倒序
  5834. $orderby = " order by bma.price desc ";
  5835. break;
  5836. case 2: //2-时间倒序
  5837. $orderby = " order by bma.begin_datetime desc ";
  5838. break;
  5839. default: //0-默认时间倒序
  5840. $orderby = " order by bmao.id desc ";
  5841. break;
  5842. }
  5843. //构建sql串
  5844. $sqlBody = "";
  5845. $sqlBody .= " from biz_market_activity_order bmao ";
  5846. $sqlBody .= " left join biz_market_activity bma on bmao.market_activityid=bma.id ";
  5847. $sqlBody .= " left join biz_worker wk on wk.id=bmao.biz_workerid ";
  5848. $sqlBody .= " left join base_user bu on bu.id=wk.base_userid ";
  5849. $sqlBody .= " left join biz_appraisal apa on apa.biz_catalog=0 and apa.fromerid=bmao.biz_workerid and apa.toerid=0 and apa.biz_id=bmao.id ";
  5850. $sqlBody .= " where 1=1 " . $query;
  5851. //查询sql及统计sql
  5852. $start = (intval($pageIndex) - 1) * $pageSize;
  5853. $sqlFetch = " select bmao.* ";
  5854. $sqlFetch .= " ,bma.price,bma.title,bma.begin_datetime,bma.finish_datetime,bma.activity_addr,bma.linker_phone";
  5855. $sqlFetch .= " ,apa.result_level as appraiseLevel,apa.result_desc as appraiseRemark ";
  5856. $sqlFetch .= " {$sqlBody} {$orderby} limit {$start},{$pageSize} ";
  5857. $pageData = pdo_fetchall($sqlFetch, $sqlParam);
  5858. //联合查询下,列项应该不算太多,可手工转换/映射!!或者以占主体的实体为主进行转换/映射;
  5859. foreach ($pageData as &$data) { //数据转换/映射
  5860. bizbase_mactivityOrderStatus($data);
  5861. $data["begin_datetime"] = date("Y-m-d H:i:s", $data["begin_datetime"]);
  5862. $data["finish_datetime"] = date("Y-m-d H:i:s", $data["finish_datetime"]);
  5863. $data["price"] = round($data["price"], 2);
  5864. $data["activity_addr"] = json_decode($data["activity_addr"], true);
  5865. $data["remark"] = trim(explode("\n", $data["remark"])[0]);
  5866. }
  5867. $sqlSummary = " select count(*) as count " . $sqlBody . ";";
  5868. $sumData = pdo_fetch($sqlSummary, $sqlParam);
  5869. return array(
  5870. "pageData" => $pageData,
  5871. "count" => intval($sumData["count"]),
  5872. );
  5873. break;
  5874. case "fetchallEnroll":
  5875. $exportExcel = isset($ajaxdata["exportExcel"]) ? $ajaxdata["exportExcel"] : $GPC["exportExcel"];
  5876. $sqlParam = array();
  5877. //查询处理
  5878. $query = isset($ajaxdata["query"]) ? $ajaxdata["query"] : $GPC["query"];
  5879. $query = empty(trim($exportExcel)) ? $query : json_decode($query, true);
  5880. if (empty($query) && !is_array($query)) { //验证一下query信息集
  5881. $query = " and 1=1 ";
  5882. } else {
  5883. $queryNew = " and 1=1 ";
  5884. foreach ($query as $fdName => $fdValue) {
  5885. if (empty($fdName) || empty($fdValue)) {
  5886. continue;
  5887. }
  5888. switch ($fdName) {
  5889. case "title":
  5890. if (empty(trim($fdValue))) {
  5891. continue;
  5892. }
  5893. $paramName = ":qy_title";
  5894. $queryNew .= " and (bma.title like concat('%',{$paramName},'%') ) ";
  5895. $sqlParam[$paramName] = $fdValue;
  5896. break;
  5897. case "memberName":
  5898. if (empty(trim($fdValue))) {
  5899. continue;
  5900. }
  5901. $paramName = ":qy_memberName";
  5902. $queryNew .= " and (wk.true_name like concat('%',{$paramName},'%') ) ";
  5903. $sqlParam[$paramName] = $fdValue;
  5904. break;
  5905. case "linkphone":
  5906. if (empty(trim($fdValue))) {
  5907. continue;
  5908. }
  5909. $paramName = ":qy_linkphone";
  5910. $queryNew .= " and (bma.linker_phone like concat('%',{$paramName},'%') ) ";
  5911. $sqlParam[$paramName] = $fdValue;
  5912. break;
  5913. case "startDate":
  5914. if (empty(trim($fdValue))) {
  5915. continue;
  5916. }
  5917. $queryNew .= " and bmao.createtime>=" . strtotime(date("Y-m-d", strtotime($fdValue))) . " and bmao.createtime<=" . strtotime(date("Y-m-d 23:59:59", strtotime($fdValue))) . " ";
  5918. break;
  5919. case "status":
  5920. switch (intval($fdValue)) {
  5921. case 1:
  5922. $queryNew .= " and bmao.`status`=0 ";
  5923. break;
  5924. case 2:
  5925. $queryNew .= " and bmao.`status`=1 and bma.finish_datetime>" . time() . " ";
  5926. break;
  5927. case 3:
  5928. $queryNew .= " and (bmao.`status`=2 or (bmao.`status`=1 and bma.finish_datetime<" . time() . ")) ";
  5929. break;
  5930. case 4:
  5931. $queryNew .= " and bmao.`status`=3 ";
  5932. break;
  5933. }
  5934. break;
  5935. case "activityId":
  5936. $queryNew .= " and bmao.`market_activityid`=" . intval($fdValue) . " ";
  5937. break;
  5938. }
  5939. }
  5940. $query = $queryNew;
  5941. }
  5942. $orderby = isset($ajaxdata["orderby"]) ? $ajaxdata["orderby"] : $GPC["orderby"];
  5943. switch (intval($orderby)) {
  5944. default: //0-默认时间倒序
  5945. $orderby = " order by bmao.id desc ";
  5946. break;
  5947. }
  5948. //构建sql串
  5949. $sqlBody = "";
  5950. $sqlBody .= " from biz_market_activity_order bmao ";
  5951. $sqlBody .= " left join biz_market_activity bma on bmao.market_activityid=bma.id ";
  5952. $sqlBody .= " left join biz_worker wk on wk.id=bmao.biz_workerid ";
  5953. $sqlBody .= " left join base_user bu on bu.id=wk.base_userid ";
  5954. $sqlBody .= " left join biz_appraisal apa on apa.biz_catalog=0 and apa.fromerid=bmao.biz_workerid and apa.toerid=0 and apa.biz_id=bmao.id ";
  5955. $sqlBody .= " where 1=1 and bmao.`status`>0 " . $query;
  5956. //查询sql及统计sql
  5957. $sqlFetch = " select bmao.* ";
  5958. $sqlFetch .= " ,bma.price,bma.title,bma.begin_datetime,bma.finish_datetime,bma.activity_addr,bma.linker_phone";
  5959. $sqlFetch .= " ,(case when wk.true_name<>'' then wk.true_name else wk.nickname end) as true_name,wk.idcard,wk.gender,bu.mobile as bu_mobile";
  5960. $sqlFetch .= " ,apa.result_level as appraiseLevel,apa.result_desc as appraiseRemark ";
  5961. $sqlFetch .= " {$sqlBody} {$orderby} ";
  5962. $exportExcel = isset($ajaxdata["exportExcel"]) ? $ajaxdata["exportExcel"] : $GPC["exportExcel"];
  5963. if (trim($exportExcel) != "true") { //正常输出
  5964. $start = (intval($pageIndex) - 1) * $pageSize;
  5965. $sqlFetch .= " limit {$start},{$pageSize} ";
  5966. $pageData = pdo_fetchall($sqlFetch, $sqlParam);
  5967. //联合查询下,列项应该不算太多,可手工转换/映射!!或者以占主体的实体为主进行转换/映射;
  5968. foreach ($pageData as &$data) { //数据转换/映射
  5969. bizbase_mactivityOrderStatus($data);
  5970. $age = "";
  5971. if (mb_strlen(trim($data["idcard"])) == 18) {
  5972. $birthdate = mb_substr(trim($data["idcard"]), 6, 8);
  5973. $datetime1 = date_create_from_format("Ymd", $birthdate);
  5974. $datetime1 = new \DateTime(date("Y-m-d", date_timestamp_get($datetime1)));
  5975. $datetime2 = new \DateTime(date("Y-m-d", time()));
  5976. $interval = $datetime1->diff($datetime2);
  5977. $age = intval($interval->format('%Y'));
  5978. }
  5979. $data["age"] = $age;
  5980. $data["begin_datetime"] = date("Y-m-d H:i:s", $data["begin_datetime"]);
  5981. $data["finish_datetime"] = date("Y-m-d H:i:s", $data["finish_datetime"]);
  5982. $data["price"] = round($data["price"], 2);
  5983. $data["activity_addr"] = json_decode($data["activity_addr"], true);
  5984. $data["remark"] = trim(explode("\n", $data["remark"])[0]);
  5985. pdo_query("update biz_market_activity_order set plater_readed=1 where id=" . intval($data["id"]));
  5986. }
  5987. $sqlSummary = " select count(*) as count " . $sqlBody . ";";
  5988. $sumData = pdo_fetch($sqlSummary, $sqlParam);
  5989. return array(
  5990. "pageData" => $pageData,
  5991. "count" => intval($sumData["count"]),
  5992. );
  5993. } else {
  5994. $sqlSummary = " select count(*) as count " . $sqlBody . ";";
  5995. $sumData = pdo_fetch($sqlSummary, $sqlParam);
  5996. $recordTotal = intval($sumData["count"]);
  5997. $pageTotal = ceil($recordTotal / $pageSize);
  5998. $args = array(
  5999. "pageIndex" => 0, "pageSize" => $pageSize, "pageTotal" => $pageTotal,
  6000. "sqlFetch" => $sqlFetch, "sqlParam" => $sqlParam,
  6001. );
  6002. if ($recordTotal <= 0) {
  6003. throw new GeneralException("", "竟然没有任何数据,没必要导出啊");
  6004. }
  6005. $csvTitle = array("开始时间", "姓名", "身份证号", "性别", "年龄", "电话");
  6006. baseexcel_exportCsv("活动报名列表", $csvTitle, $args, function ($args) {
  6007. $pageIndex = intval($args["pageIndex"]) + 1;
  6008. $args["pageIndex"] = $pageIndex;
  6009. $pageSize = intval($args["pageSize"]);
  6010. $pageTotal = intval($args["pageTotal"]);
  6011. if ($pageIndex > $pageTotal) {
  6012. return false;
  6013. }
  6014. $sqlFetch = $args["sqlFetch"];
  6015. $sqlParam = $args["sqlParam"];
  6016. $start = (intval($pageIndex) - 1) * $pageSize;
  6017. $pageData111 = pdo_fetchall($sqlFetch . " limit {$start},{$pageSize} ", $sqlParam);
  6018. $pageData = array();
  6019. foreach ($pageData111 as &$subdata) { //数据转换/映射
  6020. $age = "";
  6021. if (mb_strlen(trim($subdata["idcard"])) == 18) {
  6022. $birthdate = mb_substr(trim($subdata["idcard"]), 6, 8);
  6023. $datetime1 = date_create_from_format("Ymd", $birthdate);
  6024. $datetime1 = new \DateTime(date("Y-m-d", date_timestamp_get($datetime1)));
  6025. $datetime2 = new \DateTime(date("Y-m-d", time()));
  6026. $interval = $datetime1->diff($datetime2);
  6027. $age = intval($interval->format('%Y'));
  6028. }
  6029. $pageData[] = array(
  6030. "\t" . date("Y-m-d H:i:s", $subdata["begin_datetime"]), $subdata["true_name"], "\t" . $subdata["idcard"], intval($subdata["gender"]) < 0 ? "" : (intval($subdata["gender"]) == 0 ? "男" : "女"), $age, "\t" . $subdata["bu_mobile"],
  6031. );
  6032. }
  6033. return array("pagedata" => $pageData, "args" => $args);
  6034. });
  6035. }
  6036. break;
  6037. default:
  6038. throw new GeneralException("", "不支持的handleMode!");
  6039. }
  6040. }