index.html 128 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553255425552556255725582559256025612562256325642565256625672568256925702571257225732574257525762577257825792580258125822583258425852586258725882589259025912592259325942595259625972598259926002601260226032604260526062607260826092610261126122613261426152616261726182619262026212622262326242625262626272628262926302631263226332634263526362637263826392640264126422643264426452646264726482649265026512652265326542655265626572658265926602661266226632664266526662667266826692670267126722673267426752676267726782679268026812682268326842685268626872688268926902691269226932694269526962697269826992700270127022703270427052706270727082709271027112712271327142715271627172718271927202721272227232724272527262727272827292730273127322733273427352736273727382739274027412742274327442745274627472748274927502751275227532754275527562757275827592760276127622763276427652766276727682769277027712772277327742775277627772778277927802781278227832784278527862787278827892790279127922793279427952796279727982799280028012802280328042805280628072808280928102811281228132814281528162817281828192820282128222823282428252826282728282829283028312832283328342835283628372838283928402841284228432844284528462847284828492850285128522853285428552856285728582859286028612862286328642865286628672868286928702871287228732874287528762877287828792880288128822883288428852886288728882889289028912892289328942895289628972898289929002901290229032904290529062907290829092910291129122913291429152916291729182919292029212922292329242925292629272928292929302931293229332934293529362937293829392940294129422943294429452946294729482949295029512952295329542955295629572958295929602961296229632964296529662967296829692970297129722973297429752976297729782979298029812982298329842985298629872988298929902991299229932994299529962997299829993000300130023003300430053006300730083009301030113012301330143015301630173018301930203021302230233024302530263027302830293030303130323033303430353036303730383039304030413042304330443045304630473048304930503051305230533054305530563057305830593060306130623063306430653066306730683069307030713072307330743075307630773078307930803081308230833084308530863087308830893090309130923093309430953096309730983099310031013102310331043105310631073108310931103111311231133114311531163117311831193120312131223123312431253126312731283129313031313132313331343135313631373138313931403141314231433144314531463147314831493150315131523153315431553156315731583159316031613162316331643165316631673168316931703171317231733174317531763177317831793180318131823183318431853186318731883189319031913192319331943195319631973198319932003201320232033204320532063207320832093210321132123213
  1. <!DOCTYPE html><html><head>
  2. <title>index</title>
  3. <meta charset="utf-8">
  4. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  5. <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/katex@0.16.11/dist/katex.min.css">
  6. <script src="https://cdn.jsdelivr.net/npm/mermaid@11.1.1/dist/mermaid.min.js"></script>
  7. <style>
  8. code[class*=language-],pre[class*=language-]{color:#333;background:0 0;font-family:Consolas,"Liberation Mono",Menlo,Courier,monospace;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.4;-moz-tab-size:8;-o-tab-size:8;tab-size:8;-webkit-hyphens:none;-moz-hyphens:none;-ms-hyphens:none;hyphens:none}pre[class*=language-]{padding:.8em;overflow:auto;border-radius:3px;background:#f5f5f5}:not(pre)>code[class*=language-]{padding:.1em;border-radius:.3em;white-space:normal;background:#f5f5f5}.token.blockquote,.token.comment{color:#969896}.token.cdata{color:#183691}.token.doctype,.token.macro.property,.token.punctuation,.token.variable{color:#333}.token.builtin,.token.important,.token.keyword,.token.operator,.token.rule{color:#a71d5d}.token.attr-value,.token.regex,.token.string,.token.url{color:#183691}.token.atrule,.token.boolean,.token.code,.token.command,.token.constant,.token.entity,.token.number,.token.property,.token.symbol{color:#0086b3}.token.prolog,.token.selector,.token.tag{color:#63a35c}.token.attr-name,.token.class,.token.class-name,.token.function,.token.id,.token.namespace,.token.pseudo-class,.token.pseudo-element,.token.url-reference .token.variable{color:#795da3}.token.entity{cursor:help}.token.title,.token.title .token.punctuation{font-weight:700;color:#1d3e81}.token.list{color:#ed6a43}.token.inserted{background-color:#eaffea;color:#55a532}.token.deleted{background-color:#ffecec;color:#bd2c00}.token.bold{font-weight:700}.token.italic{font-style:italic}.language-json .token.property{color:#183691}.language-markup .token.tag .token.punctuation{color:#333}.language-css .token.function,code.language-css{color:#0086b3}.language-yaml .token.atrule{color:#63a35c}code.language-yaml{color:#183691}.language-ruby .token.function{color:#333}.language-markdown .token.url{color:#795da3}.language-makefile .token.symbol{color:#795da3}.language-makefile .token.variable{color:#183691}.language-makefile .token.builtin{color:#0086b3}.language-bash .token.keyword{color:#0086b3}pre[data-line]{position:relative;padding:1em 0 1em 3em}pre[data-line] .line-highlight-wrapper{position:absolute;top:0;left:0;background-color:transparent;display:block;width:100%}pre[data-line] .line-highlight{position:absolute;left:0;right:0;padding:inherit 0;margin-top:1em;background:hsla(24,20%,50%,.08);background:linear-gradient(to right,hsla(24,20%,50%,.1) 70%,hsla(24,20%,50%,0));pointer-events:none;line-height:inherit;white-space:pre}pre[data-line] .line-highlight:before,pre[data-line] .line-highlight[data-end]:after{content:attr(data-start);position:absolute;top:.4em;left:.6em;min-width:1em;padding:0 .5em;background-color:hsla(24,20%,50%,.4);color:#f4f1ef;font:bold 65%/1.5 sans-serif;text-align:center;vertical-align:.3em;border-radius:999px;text-shadow:none;box-shadow:0 1px #fff}pre[data-line] .line-highlight[data-end]:after{content:attr(data-end);top:auto;bottom:.4em}html body{font-family:'Helvetica Neue',Helvetica,'Segoe UI',Arial,freesans,sans-serif;font-size:16px;line-height:1.6;color:#333;background-color:#fff;overflow:initial;box-sizing:border-box;word-wrap:break-word}html body>:first-child{margin-top:0}html body h1,html body h2,html body h3,html body h4,html body h5,html body h6{line-height:1.2;margin-top:1em;margin-bottom:16px;color:#000}html body h1{font-size:2.25em;font-weight:300;padding-bottom:.3em}html body h2{font-size:1.75em;font-weight:400;padding-bottom:.3em}html body h3{font-size:1.5em;font-weight:500}html body h4{font-size:1.25em;font-weight:600}html body h5{font-size:1.1em;font-weight:600}html body h6{font-size:1em;font-weight:600}html body h1,html body h2,html body h3,html body h4,html body h5{font-weight:600}html body h5{font-size:1em}html body h6{color:#5c5c5c}html body strong{color:#000}html body del{color:#5c5c5c}html body a:not([href]){color:inherit;text-decoration:none}html body a{color:#08c;text-decoration:none}html body a:hover{color:#00a3f5;text-decoration:none}html body img{max-width:100%}html body>p{margin-top:0;margin-bottom:16px;word-wrap:break-word}html body>ol,html body>ul{margin-bottom:16px}html body ol,html body ul{padding-left:2em}html body ol.no-list,html body ul.no-list{padding:0;list-style-type:none}html body ol ol,html body ol ul,html body ul ol,html body ul ul{margin-top:0;margin-bottom:0}html body li{margin-bottom:0}html body li.task-list-item{list-style:none}html body li>p{margin-top:0;margin-bottom:0}html body .task-list-item-checkbox{margin:0 .2em .25em -1.8em;vertical-align:middle}html body .task-list-item-checkbox:hover{cursor:pointer}html body blockquote{margin:16px 0;font-size:inherit;padding:0 15px;color:#5c5c5c;background-color:#f0f0f0;border-left:4px solid #d6d6d6}html body blockquote>:first-child{margin-top:0}html body blockquote>:last-child{margin-bottom:0}html body hr{height:4px;margin:32px 0;background-color:#d6d6d6;border:0 none}html body table{margin:10px 0 15px 0;border-collapse:collapse;border-spacing:0;display:block;width:100%;overflow:auto;word-break:normal;word-break:keep-all}html body table th{font-weight:700;color:#000}html body table td,html body table th{border:1px solid #d6d6d6;padding:6px 13px}html body dl{padding:0}html body dl dt{padding:0;margin-top:16px;font-size:1em;font-style:italic;font-weight:700}html body dl dd{padding:0 16px;margin-bottom:16px}html body code{font-family:Menlo,Monaco,Consolas,'Courier New',monospace;font-size:.85em;color:#000;background-color:#f0f0f0;border-radius:3px;padding:.2em 0}html body code::after,html body code::before{letter-spacing:-.2em;content:'\00a0'}html body pre>code{padding:0;margin:0;word-break:normal;white-space:pre;background:0 0;border:0}html body .highlight{margin-bottom:16px}html body .highlight pre,html body pre{padding:1em;overflow:auto;line-height:1.45;border:#d6d6d6;border-radius:3px}html body .highlight pre{margin-bottom:0;word-break:normal}html body pre code,html body pre tt{display:inline;max-width:initial;padding:0;margin:0;overflow:initial;line-height:inherit;word-wrap:normal;background-color:transparent;border:0}html body pre code:after,html body pre code:before,html body pre tt:after,html body pre tt:before{content:normal}html body blockquote,html body dl,html body ol,html body p,html body pre,html body ul{margin-top:0;margin-bottom:16px}html body kbd{color:#000;border:1px solid #d6d6d6;border-bottom:2px solid #c7c7c7;padding:2px 4px;background-color:#f0f0f0;border-radius:3px}@media print{html body{background-color:#fff}html body h1,html body h2,html body h3,html body h4,html body h5,html body h6{color:#000;page-break-after:avoid}html body blockquote{color:#5c5c5c}html body pre{page-break-inside:avoid}html body table{display:table}html body img{display:block;max-width:100%;max-height:100%}html body code,html body pre{word-wrap:break-word;white-space:pre}}.markdown-preview{width:100%;height:100%;box-sizing:border-box}.markdown-preview ul{list-style:disc}.markdown-preview ul ul{list-style:circle}.markdown-preview ul ul ul{list-style:square}.markdown-preview ol{list-style:decimal}.markdown-preview ol ol,.markdown-preview ul ol{list-style-type:lower-roman}.markdown-preview ol ol ol,.markdown-preview ol ul ol,.markdown-preview ul ol ol,.markdown-preview ul ul ol{list-style-type:lower-alpha}.markdown-preview .newpage,.markdown-preview .pagebreak{page-break-before:always}.markdown-preview pre.line-numbers{position:relative;padding-left:3.8em;counter-reset:linenumber}.markdown-preview pre.line-numbers>code{position:relative}.markdown-preview pre.line-numbers .line-numbers-rows{position:absolute;pointer-events:none;top:1em;font-size:100%;left:0;width:3em;letter-spacing:-1px;border-right:1px solid #999;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.markdown-preview pre.line-numbers .line-numbers-rows>span{pointer-events:none;display:block;counter-increment:linenumber}.markdown-preview pre.line-numbers .line-numbers-rows>span:before{content:counter(linenumber);color:#999;display:block;padding-right:.8em;text-align:right}.markdown-preview .mathjax-exps .MathJax_Display{text-align:center!important}.markdown-preview:not([data-for=preview]) .code-chunk .code-chunk-btn-group{display:none}.markdown-preview:not([data-for=preview]) .code-chunk .status{display:none}.markdown-preview:not([data-for=preview]) .code-chunk .output-div{margin-bottom:16px}.markdown-preview .md-toc{padding:0}.markdown-preview .md-toc .md-toc-link-wrapper .md-toc-link{display:inline;padding:.25rem 0}.markdown-preview .md-toc .md-toc-link-wrapper .md-toc-link div,.markdown-preview .md-toc .md-toc-link-wrapper .md-toc-link p{display:inline}.markdown-preview .md-toc .md-toc-link-wrapper.highlighted .md-toc-link{font-weight:800}.scrollbar-style::-webkit-scrollbar{width:8px}.scrollbar-style::-webkit-scrollbar-track{border-radius:10px;background-color:transparent}.scrollbar-style::-webkit-scrollbar-thumb{border-radius:5px;background-color:rgba(150,150,150,.66);border:4px solid rgba(150,150,150,.66);background-clip:content-box}html body[for=html-export]:not([data-presentation-mode]){position:relative;width:100%;height:100%;top:0;left:0;margin:0;padding:0;overflow:auto}html body[for=html-export]:not([data-presentation-mode]) .markdown-preview{position:relative;top:0;min-height:100vh}@media screen and (min-width:914px){html body[for=html-export]:not([data-presentation-mode]) .markdown-preview{padding:2em calc(50% - 457px + 2em)}}@media screen and (max-width:914px){html body[for=html-export]:not([data-presentation-mode]) .markdown-preview{padding:2em}}@media screen and (max-width:450px){html body[for=html-export]:not([data-presentation-mode]) .markdown-preview{font-size:14px!important;padding:1em}}@media print{html body[for=html-export]:not([data-presentation-mode]) #sidebar-toc-btn{display:none}}html body[for=html-export]:not([data-presentation-mode]) #sidebar-toc-btn{position:fixed;bottom:8px;left:8px;font-size:28px;cursor:pointer;color:inherit;z-index:99;width:32px;text-align:center;opacity:.4}html body[for=html-export]:not([data-presentation-mode])[html-show-sidebar-toc] #sidebar-toc-btn{opacity:1}html body[for=html-export]:not([data-presentation-mode])[html-show-sidebar-toc] .md-sidebar-toc{position:fixed;top:0;left:0;width:300px;height:100%;padding:32px 0 48px 0;font-size:14px;box-shadow:0 0 4px rgba(150,150,150,.33);box-sizing:border-box;overflow:auto;background-color:inherit}html body[for=html-export]:not([data-presentation-mode])[html-show-sidebar-toc] .md-sidebar-toc::-webkit-scrollbar{width:8px}html body[for=html-export]:not([data-presentation-mode])[html-show-sidebar-toc] .md-sidebar-toc::-webkit-scrollbar-track{border-radius:10px;background-color:transparent}html body[for=html-export]:not([data-presentation-mode])[html-show-sidebar-toc] .md-sidebar-toc::-webkit-scrollbar-thumb{border-radius:5px;background-color:rgba(150,150,150,.66);border:4px solid rgba(150,150,150,.66);background-clip:content-box}html body[for=html-export]:not([data-presentation-mode])[html-show-sidebar-toc] .md-sidebar-toc a{text-decoration:none}html body[for=html-export]:not([data-presentation-mode])[html-show-sidebar-toc] .md-sidebar-toc .md-toc{padding:0 16px}html body[for=html-export]:not([data-presentation-mode])[html-show-sidebar-toc] .md-sidebar-toc .md-toc .md-toc-link-wrapper .md-toc-link{display:inline;padding:.25rem 0}html body[for=html-export]:not([data-presentation-mode])[html-show-sidebar-toc] .md-sidebar-toc .md-toc .md-toc-link-wrapper .md-toc-link div,html body[for=html-export]:not([data-presentation-mode])[html-show-sidebar-toc] .md-sidebar-toc .md-toc .md-toc-link-wrapper .md-toc-link p{display:inline}html body[for=html-export]:not([data-presentation-mode])[html-show-sidebar-toc] .md-sidebar-toc .md-toc .md-toc-link-wrapper.highlighted .md-toc-link{font-weight:800}html body[for=html-export]:not([data-presentation-mode])[html-show-sidebar-toc] .markdown-preview{left:300px;width:calc(100% - 300px);padding:2em calc(50% - 457px - 300px / 2);margin:0;box-sizing:border-box}@media screen and (max-width:1274px){html body[for=html-export]:not([data-presentation-mode])[html-show-sidebar-toc] .markdown-preview{padding:2em}}@media screen and (max-width:450px){html body[for=html-export]:not([data-presentation-mode])[html-show-sidebar-toc] .markdown-preview{width:100%}}html body[for=html-export]:not([data-presentation-mode]):not([html-show-sidebar-toc]) .markdown-preview{left:50%;transform:translateX(-50%)}html body[for=html-export]:not([data-presentation-mode]):not([html-show-sidebar-toc]) .md-sidebar-toc{display:none}
  9. /* Please visit the URL below for more information: */
  10. /* https://shd101wyy.github.io/markdown-preview-enhanced/#/customize-css */
  11. </style>
  12. <!-- The content below will be included at the end of the <head> element. --><script type="text/javascript">
  13. document.addEventListener("DOMContentLoaded", function () {
  14. // your code here
  15. });
  16. </script></head><body for="html-export">
  17. <div class="crossnote markdown-preview ">
  18. <h1 id="程序详细设计">程序详细设计 </h1>
  19. <p>程序设计背景:</p>
  20. <ul>
  21. <li>系统分为三部分:用户公众号端、技师 app 端、PC saas 管理端</li>
  22. <li>后台模块功能设计</li>
  23. </ul>
  24. <h2 id="系统架构系统架构indexhtml"><a href="./%E7%B3%BB%E7%BB%9F%E6%9E%B6%E6%9E%84/index.html">系统架构</a> </h2>
  25. <h2 id="数据库设计数据库设计indexhtml"><a href="./%E6%95%B0%E6%8D%AE%E5%BA%93%E8%AE%BE%E8%AE%A1/index.html">数据库设计</a> </h2>
  26. <h2 id="流程设计">流程设计 </h2>
  27. <p></p><h3 id="总流程">总流程 </h3>
  28. <p></p><div class="mermaid"> flowchart LR
  29. Start((开始)) --&gt; Login[登录/注册]
  30. Login --&gt; UserLogin[用户登录]
  31. Login --&gt; TechLogin[技师登录]
  32. %% 用户主要流程
  33. UserLogin --&gt; UserOrder[用户下单]
  34. UserOrder --&gt; SelectTech[选择技师]
  35. UserOrder --&gt; SelectService[选择服务项目]
  36. SelectTech &amp; SelectService --&gt; Payment[订单支付]
  37. Payment --&gt; OfflineService[线下服务]
  38. OfflineService --&gt; EndOrder[订单结束]
  39. EndOrder --&gt; Settlement[分账结算]
  40. Settlement --&gt; End
  41. %% 用户其他功能
  42. UserLogin --&gt; Wallet[用户钱包]
  43. Wallet --&gt; Recharge[用户充值]
  44. Wallet --&gt; Withdraw[用户提现]
  45. UserLogin --&gt; Marketing[营销券]
  46. UserLogin --&gt; UserTeam[我的团队]
  47. UserTeam --&gt; TeamMember[团队成员]
  48. UserTeam --&gt; TeamCommission[团队佣金]
  49. UserTeam --&gt; ShareMoney[分享赚钱]
  50. UserLogin --&gt; Member[嘀咚会员]
  51. UserLogin --&gt; Channel[渠道合作]
  52. Channel --&gt; TechApply[技师申请]
  53. Channel --&gt; BusinessApply[业务员申请]
  54. UserLogin --&gt; Logout[注销账号]
  55. %% 技师主要流程
  56. TechLogin --&gt; ServiceSetting[服务项目设置]
  57. TechLogin --&gt; OrderSetting[接单设置]
  58. TechLogin --&gt; TechAccept[技师接单]
  59. TechLogin --&gt; TechGrab[技师抢单]
  60. TechAccept &amp; TechGrab --&gt; StartService[线下服务]
  61. StartService --&gt; EndOrder[订单结束]
  62. EndOrder --&gt; Settlement[分账结算]
  63. Settlement --&gt; End
  64. %% 技师其他功能
  65. TechLogin --&gt; TechTeam[技师团队]
  66. TechTeam --&gt; TeamMember[团队成员]
  67. TechTeam --&gt; TeamCommission[团队佣金]
  68. TechTeam --&gt; ShareMoney[分享赚钱]
  69. TechLogin --&gt; TechWallet[技师钱包]
  70. TechWallet --&gt; TechRecharge[技师充值]
  71. TechWallet --&gt; TechWithdraw[技师提现]
  72. TechLogin --&gt; Contract[合同解约]
  73. TechLogin --&gt; CheckIn[异地签到]
  74. TechLogin --&gt; LogoutJ[注销账号]
  75. %% 样式设置
  76. classDef primary fill:#e1f5fe,stroke:#01579b,stroke-width:2px
  77. classDef secondary fill:#f3e5f5,stroke:#4a148c,stroke-width:2px
  78. classDef process fill:#e8f5e9,stroke:#1b5e20,stroke-width:2px
  79. class UserLogin,TechLogin primary
  80. class UserOrder,TechAccept,TechGrab secondary
  81. class Payment,OfflineService,Settlement process
  82. click UserLogin href "#用户登录哈"
  83. click Wallet href "#用户钱包哈"
  84. click Recharge href "#用户充值哈"
  85. click Withdraw href "#用户提现哈"
  86. click Marketing href "#营销券"
  87. click UserTeam href "#我的团队哈"
  88. click Member href "#嘀咚会员"
  89. click TechApply href "#技师申请"
  90. click TechLogin href "#技师登录"
  91. click TechTeam href "#技师团队"
  92. click TechWallet href "#技师钱包"
  93. click TechRecharge href "#技师充值"
  94. click TechWithdraw href "#技师提现"
  95. click ServiceSetting href "#项目设置哈"
  96. click OrderSetting href "#接单设置哈"
  97. click Contract href "#合同解约"
  98. click CheckIn href "#异地签到"
  99. click TeamMember href "#团队成员"
  100. click TeamCommission href "#团队佣金"
  101. click ShareMoney href "#分享赚钱"
  102. click SelectTech,TechAccept href "#选择技师下单"
  103. click SelectService,TechGrab href "#选择项目下单哈"
  104. click Payment href "#订单支付"
  105. click OfflineService,EndOrder,StartService href "#服务流程"
  106. click Settlement href "#分账结算"
  107. click Logout href "#用户注销账号"
  108. click LogoutJ href "#技师注销账号"
  109. </div><h4 id="用户登录哈">用户登录哈 </h4>
  110. <p><strong><em>后台逻辑:</em></strong></p>
  111. <ol>
  112. <li><a href="#%E7%94%A8%E6%88%B7%E7%99%BB%E5%BD%95">用户登录</a></li>
  113. <li><a href="#%E5%BE%AE%E4%BF%A1%E7%99%BB%E5%BD%95">微信登录</a></li>
  114. </ol>
  115. <p><strong><em>前端逻辑:</em></strong><br>
  116. –SUDOQ–</p>
  117. <h4 id="用户钱包哈">用户钱包哈 </h4>
  118. <p><strong><em>后台逻辑:</em></strong></p>
  119. <ol>
  120. <li>用户点击钱包</li>
  121. <li><a href="#%E7%94%A8%E6%88%B7%E9%92%B1%E5%8C%85">用户钱包</a></li>
  122. </ol>
  123. <p><strong><em>UI 图:</em></strong></p>
  124. <p><img src="./assets/%E6%80%BB%E6%B5%81%E7%A8%8B%E6%B6%89%E5%8F%8A%E5%88%B0%E7%9A%84%E5%9B%BE/%E9%92%B1%E5%8C%85.png" alt=""></p>
  125. <h4 id="用户充值哈">用户充值哈 </h4>
  126. <p><strong><em>后台逻辑:</em></strong></p>
  127. <ol>
  128. <li>用户选择充值类型(平台充值、技师充值),充值方式,充值金额</li>
  129. <li><a href="#%E7%94%A8%E6%88%B7%E5%85%85%E5%80%BC">用户充值</a> --SUDOH–</li>
  130. </ol>
  131. <p><strong><em>UI 图:</em></strong></p>
  132. <p><img src="./assets/%E6%80%BB%E6%B5%81%E7%A8%8B%E6%B6%89%E5%8F%8A%E5%88%B0%E7%9A%84%E5%9B%BE%E5%85%85%E5%80%BC.png" alt=""></p>
  133. <h4 id="用户提现哈">用户提现哈 </h4>
  134. <p><strong><em>后台逻辑:</em></strong></p>
  135. <ol>
  136. <li>用户点击体现、提现方式、体现金额</li>
  137. <li><a href="#%E7%94%A8%E6%88%B7%E6%8F%90%E7%8E%B0">用户提现</a></li>
  138. </ol>
  139. <p><strong><em>UI 图:</em></strong></p>
  140. <p><img src="./assets/%E6%80%BB%E6%B5%81%E7%A8%8B%E6%B6%89%E5%8F%8A%E5%88%B0%E7%9A%84%E5%9B%BE/%E6%8F%90%E7%8E%B0.png" alt=""></p>
  141. <h4 id="营销券">营销券 </h4>
  142. <p><strong><em>后台逻辑:</em></strong></p>
  143. <ol>
  144. <li>用户点击营销券</li>
  145. <li>–SUDOH–</li>
  146. </ol>
  147. <p><strong><em>UI 图:</em></strong></p>
  148. <p><img src="./assets/%E6%80%BB%E6%B5%81%E7%A8%8B%E6%B6%89%E5%8F%8A%E5%88%B0%E7%9A%84%E5%9B%BE/%E8%90%A5%E9%94%80%E5%88%B8.png" alt=""></p>
  149. <h4 id="我的团队哈">我的团队哈 </h4>
  150. <p><strong><em>后台逻辑:</em></strong></p>
  151. <ol>
  152. <li>用户点击我的团队</li>
  153. <li><a href="#%E6%88%91%E7%9A%84%E5%9B%A2%E9%98%9F">我的团队</a></li>
  154. </ol>
  155. <p><strong><em>UI 图:</em></strong><br>
  156. –SUDOQ–</p>
  157. <h4 id="团队成员">团队成员 </h4>
  158. <p><strong><em>后台逻辑:</em></strong></p>
  159. <ol>
  160. <li>用户点击团队成员</li>
  161. <li>–SUDOH–</li>
  162. </ol>
  163. <p><strong><em>UI 图:</em></strong><br>
  164. –SUDOQ–</p>
  165. <h4 id="团队佣金">团队佣金 </h4>
  166. <p><strong><em>后台逻辑:</em></strong></p>
  167. <ol>
  168. <li>用户点击团队佣金<br>
  169. –SUDOH–</li>
  170. </ol>
  171. <p><strong><em>UI 图:</em></strong></p>
  172. <p><img src="./assets/%E6%80%BB%E6%B5%81%E7%A8%8B%E6%B6%89%E5%8F%8A%E5%88%B0%E7%9A%84%E5%9B%BE/%E5%9B%A2%E9%98%9F%E4%BD%A3%E9%87%91.png" alt=""></p>
  173. <h4 id="分享赚钱">分享赚钱 </h4>
  174. <p><strong><em>后台逻辑:</em></strong></p>
  175. <ol>
  176. <li>用户点击分享赚钱</li>
  177. <li>–SUDOH–</li>
  178. </ol>
  179. <p><strong><em>UI 图:</em></strong><br>
  180. –SUDOQ–</p>
  181. <h4 id="嘀咚会员">嘀咚会员 </h4>
  182. <p><strong><em>后台逻辑:</em></strong></p>
  183. <ol>
  184. <li>用户点击嘀咚会员</li>
  185. <li>–SUDOH–</li>
  186. </ol>
  187. <p><strong><em>UI 图:</em></strong></p>
  188. <p><img src="./assets/%E6%80%BB%E6%B5%81%E7%A8%8B%E6%B6%89%E5%8F%8A%E5%88%B0%E7%9A%84%E5%9B%BE/%E5%98%80%E5%92%9A%E4%BC%9A%E5%91%98.png" alt=""></p>
  189. <h4 id="渠道合作">渠道合作 </h4>
  190. <p><strong><em>UI 图:</em></strong></p>
  191. <p><img src="./assets/%E6%80%BB%E6%B5%81%E7%A8%8B%E6%B6%89%E5%8F%8A%E5%88%B0%E7%9A%84%E5%9B%BE/%E6%B8%A0%E9%81%93%E5%90%88%E4%BD%9C.png" alt=""></p>
  192. <h4 id="技师申请">技师申请 </h4>
  193. <p><a href="#%E6%8A%80%E5%B8%88%E6%B3%A8%E5%86%8C%E6%B5%81%E7%A8%8B">技师注册</a></p>
  194. <h4 id="业务员申请">业务员申请 </h4>
  195. <p><strong><em>后台逻辑:</em></strong><br>
  196. –SUDOH–</p>
  197. <p><strong><em>UI 图:</em></strong><br>
  198. –SUDOQ–</p>
  199. <h4 id="技师登录">技师登录 </h4>
  200. <p>1.技师登录就是用户登录</p>
  201. <h4 id="技师钱包">技师钱包 </h4>
  202. <p><strong><em>后台逻辑:</em></strong></p>
  203. <ol>
  204. <li>技师点击钱包</li>
  205. <li><a href="#%E8%8E%B7%E5%8F%96%E9%92%B1%E5%8C%85">技师钱包</a></li>
  206. </ol>
  207. <p><strong><em>UI 图:</em></strong></p>
  208. <p><img src="./assets/%E6%80%BB%E6%B5%81%E7%A8%8B%E6%B6%89%E5%8F%8A%E5%88%B0%E7%9A%84%E5%9B%BE/%E6%8A%80%E5%B8%88%E9%92%B1%E5%8C%85.png" alt=""></p>
  209. <h4 id="技师充值">技师充值 </h4>
  210. <p><strong><em>后台逻辑:</em></strong></p>
  211. <ol>
  212. <li>技师点击充值</li>
  213. <li>–SUDOH–</li>
  214. </ol>
  215. <p><strong><em>UI 图:</em></strong><br>
  216. –SUDOQ–</p>
  217. <h4 id="技师提现">技师提现 </h4>
  218. <p><strong><em>后台逻辑:</em></strong></p>
  219. <ol>
  220. <li>技师点击提现</li>
  221. <li><a href="#%E6%8F%90%E7%8E%B0">技师提现</a></li>
  222. </ol>
  223. <p><strong><em>UI 图:</em></strong><br>
  224. –SUDOQ–</p>
  225. <h4 id="项目设置哈">项目设置哈 </h4>
  226. <p><strong><em>后台逻辑:</em></strong></p>
  227. <ol>
  228. <li>针对每个项目进行设置</li>
  229. <li><a href="#%E8%8E%B7%E5%8F%96%E9%A1%B9%E7%9B%AE">技师项目列表</a></li>
  230. <li><a href="#%E8%AE%BE%E7%BD%AE%E9%A1%B9%E7%9B%AE">项目设置</a></li>
  231. </ol>
  232. <p><strong><em>UI 图:</em></strong></p>
  233. <p>1.技师项目列表</p>
  234. <p><img src="./assets/%E6%80%BB%E6%B5%81%E7%A8%8B%E6%B6%89%E5%8F%8A%E5%88%B0%E7%9A%84%E5%9B%BE/%E7%82%B9%E5%87%BB%E9%A1%B9%E7%9B%AE%E8%AE%BE%E7%BD%AE.png" alt=""></p>
  235. <p>2.技师项目设置</p>
  236. <p><img src="./assets/%E6%80%BB%E6%B5%81%E7%A8%8B%E6%B6%89%E5%8F%8A%E5%88%B0%E7%9A%84%E5%9B%BE/%E8%AE%BE%E7%BD%AE%E9%A1%B9%E7%9B%AE.png" alt=""></p>
  237. <h4 id="接单设置哈">接单设置哈 </h4>
  238. <p><strong><em>后台逻辑:</em></strong></p>
  239. <ol>
  240. <li>点击接单设置</li>
  241. <li><a href="#%E8%AE%BE%E7%BD%AE%E5%B7%A5%E6%97%B6">接单设置</a></li>
  242. </ol>
  243. <p><strong><em>UI 图:</em></strong></p>
  244. <p><img src="./assets/%E6%80%BB%E6%B5%81%E7%A8%8B%E6%B6%89%E5%8F%8A%E5%88%B0%E7%9A%84%E5%9B%BE/%E6%8E%A5%E5%8D%95%E8%AE%BE%E7%BD%AE.png" alt=""></p>
  245. <h4 id="选择技师下单">选择技师下单 </h4>
  246. <p><a href="#%E9%80%89%E6%8B%A9%E6%8A%80%E5%B8%88%E4%B8%8B%E5%8D%95%E6%B5%81%E7%A8%8B">选择技师下单</a></p>
  247. <h4 id="选择项目下单哈">选择项目下单哈 </h4>
  248. <p><a href="#%E9%80%89%E6%8B%A9%E9%A1%B9%E7%9B%AE%E4%B8%8B%E5%8D%95">选择项目下单</a></p>
  249. <h4 id="订单支付">订单支付 </h4>
  250. <p><strong><em>后台逻辑:</em></strong></p>
  251. <ol>
  252. <li>用户点击订单支付</li>
  253. <li>–SUDOH–</li>
  254. </ol>
  255. <h4 id="线下服务">线下服务 </h4>
  256. <p><a href="#%E6%9C%8D%E5%8A%A1%E6%B5%81%E7%A8%8B">线下服务</a></p>
  257. <h4 id="分账结算">分账结算 </h4>
  258. <p><strong><em>后台逻辑:</em></strong></p>
  259. <ol>
  260. <li>订单结束</li>
  261. <li><a href="#%E5%88%86%E8%B4%A6%E7%AE%97%E6%B3%95%E8%AE%BE%E8%AE%A1">分账结算</a></li>
  262. </ol>
  263. <h4 id="合同解约">合同解约 </h4>
  264. <p><strong><em>后台逻辑:</em></strong><br>
  265. –SUDOH–</p>
  266. <p><strong><em>UI 图:</em></strong><br>
  267. –SUDOQ–</p>
  268. <h4 id="异地签到">异地签到 </h4>
  269. <p><strong><em>后台逻辑:</em></strong><br>
  270. –SUDOH–</p>
  271. <p><strong><em>UI 图:</em></strong><br>
  272. –SUDOQ–</p>
  273. <h4 id="技师注销账号">技师注销账号 </h4>
  274. <p><strong><em>后台逻辑:</em></strong><br>
  275. –SUDOH–</p>
  276. <h4 id="用户注销账号">用户注销账号 </h4>
  277. <p><strong><em>后台逻辑:</em></strong><br>
  278. <a href="#%E7%94%A8%E6%88%B7%E6%B3%A8%E9%94%80">用户注销账号</a></p>
  279. <p></p>
  280. <h3 id="技师注册流程">技师注册流程 </h3>
  281. <p></p><div class="mermaid">flowchart TD
  282. A[用户端申请成为技师] --&gt; B[客服登录后台管理进行审核]
  283. B --&gt;|审核中| C[申请页面显示正在审核]
  284. B --&gt;|拒绝| D[可以修改个人信息重新申请]
  285. B --&gt;|通过| E[申请页面变成切换身份进入技端]
  286. E --&gt; F[进入技师端]
  287. F --&gt; G[支付宝实名认证,技师上传认证资料]
  288. G --&gt; I[客服再次对技师进行审核]
  289. I --&gt; J[签合同]
  290. J --&gt; Z[初始化项目设置、接单设置默认值,后台]
  291. click A href "#技师申请" _self
  292. click F href "#技师端" _self
  293. click G href "#技师认证" _self
  294. click I href "#技师认证审核" _self
  295. click J href "#签合同" _self
  296. </div><h4 id="技师申请-1">技师申请 </h4>
  297. <p><strong><em>后台逻辑</em></strong></p>
  298. <p>申请信息:姓名、性别、出生日期、联系方式、意向城市<br>
  299. 状态:审核中、拒绝、通过</p>
  300. <p><strong><em>UI 图</em></strong></p>
  301. <p><img src="./assets/%E6%8A%80%E5%B8%88%E6%B3%A8%E5%86%8C%E6%B5%81%E7%A8%8B%E5%9B%BE/%E6%8A%80%E5%B8%88%E7%94%B3%E8%AF%B7.png" alt=""></p>
  302. <h4 id="技师端">技师端 </h4>
  303. <p><strong><em>UI 图</em></strong></p>
  304. <p><img src="./assets/%E6%8A%80%E5%B8%88%E6%B3%A8%E5%86%8C%E6%B5%81%E7%A8%8B%E5%9B%BE/%E6%8A%80%E5%B8%88%E7%AB%AF%E8%A1%A5%E5%85%85.png" alt=""></p>
  305. <h4 id="技师认证">技师认证 </h4>
  306. <p><strong><em>后台逻辑</em></strong></p>
  307. <p>上传资料:按摩证、营业执照、健康证、身份证正反面、手持身份证</p>
  308. <p><strong><em>UI 图</em></strong></p>
  309. <p><img src="./assets/%E6%8A%80%E5%B8%88%E6%B3%A8%E5%86%8C%E6%B5%81%E7%A8%8B%E5%9B%BE/%E6%9F%A5%E7%9C%8B%E5%9F%BA%E6%9C%AC%E4%BF%A1%E6%81%AF.png" alt=""><br>
  310. <img src="./assets/%E6%8A%80%E5%B8%88%E6%B3%A8%E5%86%8C%E6%B5%81%E7%A8%8B%E5%9B%BE/%E8%A1%A5%E5%85%85%E4%BF%A1%E6%81%AF.png" alt=""></p>
  311. <h4 id="技师认证审核">技师认证审核 </h4>
  312. <p><strong><em>后台逻辑</em></strong></p>
  313. <p>审核:通过、拒绝</p>
  314. <p><strong><em>UI 图</em></strong></p>
  315. <p><img src="./assets/%E6%8A%80%E5%B8%88%E6%B3%A8%E5%86%8C%E6%B5%81%E7%A8%8B%E5%9B%BE/%E5%B9%B3%E5%8F%B0%E5%AE%A1%E6%A0%B8.png" alt=""></p>
  316. <h4 id="签合同">签合同 </h4>
  317. <p><mark>TODOQ</mark> 待画签合同页面<br>
  318. <mark>TODOH</mark> 签合同逻辑</p>
  319. <p></p>
  320. <h3 id="下单流程">下单流程 </h3>
  321. <p></p><p><span>[CROSSNOTETOC]</span></p>
  322. <h4 id="选择技师下单流程">选择技师下单流程 </h4>
  323. <div class="mermaid"> flowchart TD
  324. %% 基础选择流程
  325. Start([开始]) --&gt; A[用户选择服务位置]
  326. A --&gt; B[查询附近技师列表]
  327. B --&gt; C[用户选择技师]
  328. C --&gt; D[展示技师项目列表]
  329. D --&gt; E[用户选择项目]
  330. E --&gt; F[展示项目详情]
  331. F --&gt; G[用户选择服务时间]
  332. G --&gt; H[用户选择营销卷]
  333. H --&gt; I[计算订单费用]
  334. %% 支付流程
  335. I --&gt; J[用户确认下单]
  336. J --&gt; K{支付结果}
  337. %% 支付失败处理
  338. K --&gt;|失败| L[订单状态:待付款]
  339. L --&gt; M[客服跟进]
  340. M --&gt; N{用户选择}
  341. N --&gt;|重新支付| J
  342. N --&gt;|取消订单| O[退款处理]
  343. %% 支付成功处理
  344. K --&gt;|成功| P[订单状态:已支付]
  345. P --&gt; Q[推送订单给技师]
  346. %% 技师处理流程
  347. Q --&gt; R{技师处理}
  348. %% 技师接单分支
  349. R --&gt;|接单| S[订单状态:已接单]
  350. S --&gt; T[技师确认出发]
  351. T --&gt; U[订单状态:已出发]
  352. %% 技师拒单分支
  353. R --&gt;|拒单| V[订单状态:已拒绝]
  354. V --&gt; W[客服处理]
  355. W --&gt; X{处理方案}
  356. X --&gt;|更换技师| Q
  357. X --&gt;|用户退款| O
  358. %% 接单超时处理
  359. R --&gt;|超时| Y[客服跟进]
  360. Y --&gt; Z{处理结果}
  361. Z --&gt;|联系上技师| R
  362. Z --&gt;|更换技师| Q
  363. Z --&gt;|取消订单| O
  364. %% 结束节点
  365. U --&gt; End([开始服务])
  366. O --&gt; Cancel([订单结束])
  367. %% 样式定义
  368. classDef default fill:#f9f9f9,stroke:#333,stroke-width:2px
  369. classDef process fill:#dcedc8,stroke:#33691e
  370. classDef decision fill:#fff3e0,stroke:#e65100
  371. classDef status fill:#e3f2fd,stroke:#0d47a1
  372. %% 应用样式
  373. class K,R,X,Z decision
  374. class L,P,S,U,V status
  375. class A,B,C,D,E,F,G,H,I process
  376. click A,B,C href "#用户选择技师"
  377. click D,E,F href "#用户选择项目"
  378. click G href "#用户选择可服务时间"
  379. click H,I href "#用户选择营销卷"
  380. click J href "#用户点击立即结算"
  381. click L href "#支付失败"
  382. click P href "#支付成功"
  383. click S href "#技师接单"
  384. click V href "#技师拒绝接单"
  385. click X href "#订单超时"
  386. </div><h5 id="用户选择技师">用户选择技师 </h5>
  387. <p><strong><em>后台逻辑:</em></strong></p>
  388. <ol>
  389. <li>获取前端传递的经纬度,根据经纬度查询出附近的技师</li>
  390. <li><a href="#%E8%8E%B7%E5%8F%96%E6%8A%80%E5%B8%88%E5%88%97%E8%A1%A8">获取技师列表</a></li>
  391. <li><a href="#%E8%8E%B7%E5%8F%96%E6%8A%80%E5%B8%88%E8%AF%A6%E6%83%85">获取技师详情</a></li>
  392. </ol>
  393. <p><strong><em>UI 图:</em></strong><br>
  394. <img src="./assets/%E4%B8%8B%E5%8D%95%E6%B5%81%E7%A8%8B%E5%9B%BE%E7%89%87/%E9%80%89%E6%8B%A9%E6%8A%80%E5%B8%88%E4%B8%8B%E5%8D%95.png" alt=""></p>
  395. <h5 id="用户选择项目">用户选择项目 </h5>
  396. <p><strong><em>后台逻辑:</em></strong></p>
  397. <ol>
  398. <li>获取前端传递的技师 id,查询出该技师下可服务项目</li>
  399. <li>获取前端传递的区域地址,查询出该区域地址可服务项目(370602 或 156370602)</li>
  400. <li><a href="#%E8%8E%B7%E5%8F%96%E9%A1%B9%E7%9B%AE%E5%88%97%E8%A1%A8-%E6%8A%80%E5%B8%88%E5%BC%80%E9%80%9A%E7%A7%9F%E6%88%B7%E9%A1%B9%E7%9B%AE">获取项目列表</a></li>
  401. <li><a href="#%E8%8E%B7%E5%8F%96%E9%A1%B9%E7%9B%AE%E8%AF%A6%E6%83%85-%E7%A7%9F%E6%88%B7%E9%A1%B9%E7%9B%AE">获取项目详情</a></li>
  402. </ol>
  403. <p><strong><em>UI 图:</em></strong><br>
  404. <img src="./assets/%E4%B8%8B%E5%8D%95%E6%B5%81%E7%A8%8B%E5%9B%BE%E7%89%87/%E9%80%89%E6%8B%A9%E9%A1%B9%E7%9B%AE.png" alt=""></p>
  405. <h5 id="用户选择可服务时间">用户选择可服务时间 </h5>
  406. <p><strong>前端逻辑</strong></p>
  407. <ol>
  408. <li>获取前端传递的技师 id 和项目 id,查询出该技师下,该项目的可服务时间,以及下单详情信息</li>
  409. <li>获取前端传递的区域地址,计算订单金额(370602 或 156370602)</li>
  410. <li>获取前端传递的路程,计算订单金额</li>
  411. </ol>
  412. <p><strong><em>后台逻辑:</em></strong></p>
  413. <ol>
  414. <li><a href="#%E8%AE%A1%E7%AE%97%E8%AE%A2%E5%8D%95%E9%87%91%E9%A2%9D">计算订单金额</a></li>
  415. <li><a href="#%E8%AE%A2%E5%8D%95%E5%88%9D%E5%A7%8B%E5%8C%96-%E5%89%8D%E7%AB%AF%E5%88%9D%E5%A7%8B%E5%8C%96">订单详情</a></li>
  416. </ol>
  417. <p><strong><em>UI 图:</em></strong><br>
  418. <img src="./assets/%E4%B8%8B%E5%8D%95%E6%B5%81%E7%A8%8B%E5%9B%BE%E7%89%87/%E9%80%89%E6%8B%A9%E5%8F%AF%E6%9C%8D%E5%8A%A1%E6%97%B6%E9%97%B4.png" alt=""></p>
  419. <h5 id="用户选择营销卷">用户选择营销卷 </h5>
  420. <p><strong><em>后台逻辑:</em></strong></p>
  421. <ol>
  422. <li>获取前端传递的技师 id 和项目 id,查询出该技师下,该项目的可使用的营销卷</li>
  423. <li>选择优惠劵</li>
  424. <li><a href="#%E8%AE%A1%E7%AE%97%E8%AE%A2%E5%8D%95%E9%87%91%E9%A2%9D">计算订单金额</a></li>
  425. </ol>
  426. <p><strong><em>UI 图:</em></strong><br>
  427. <img src="./assets/%E4%B8%8B%E5%8D%95%E6%B5%81%E7%A8%8B%E5%9B%BE%E7%89%87/%E9%80%89%E6%8B%A9%E4%BC%98%E6%83%A0%E5%8A%B5.png" alt=""></p>
  428. <h5 id="用户点击立即结算">用户点击立即结算 </h5>
  429. <p><strong><em>后台逻辑:</em></strong></p>
  430. <ol>
  431. <li>创建订单,并判断使用的那种支付方式</li>
  432. <li><a href="#%E5%88%9B%E5%BB%BA%E8%AE%A2%E5%8D%95">创建订单</a></li>
  433. <li><a href="#%E8%8E%B7%E5%8F%96%E6%94%AF%E4%BB%98%E9%85%8D%E7%BD%AE">调用支付</a></li>
  434. </ol>
  435. <p><strong><em>UI 图:</em></strong><br>
  436. <img src="./assets/%E4%B8%8B%E5%8D%95%E6%B5%81%E7%A8%8B%E5%9B%BE%E7%89%87/%E7%AB%8B%E5%8D%B3%E7%BB%93%E7%AE%97.png" alt=""></p>
  437. <h5 id="支付失败">支付失败 </h5>
  438. <p><strong><em>后台逻辑:</em></strong></p>
  439. <ol>
  440. <li>支付超时、取消支付导致的用户支付失败,极光推送客服用户支付失败</li>
  441. <li><a href="#%E6%94%AF%E4%BB%98%E5%A4%B1%E8%B4%A5">支付失败</a> TODO:??</li>
  442. </ol>
  443. <p><strong><em>UI 图:</em></strong><br>
  444. <img src="./assets/%E4%B8%8B%E5%8D%95%E6%B5%81%E7%A8%8B%E5%9B%BE%E7%89%87/%E6%94%AF%E4%BB%98%E5%A4%B1%E8%B4%A5%E3%80%81%E6%94%AF%E4%BB%98%E8%B6%85%E6%97%B6.png" alt=""></p>
  445. <h5 id="支付成功">支付成功 </h5>
  446. <p><strong><em>后台逻辑:</em></strong></p>
  447. <ol>
  448. <li>支付成功,后台更改订单,且极光推送技师接单</li>
  449. <li><a href="#%E6%94%AF%E4%BB%98%E6%88%90%E5%8A%9F">支付成功</a> TODO:??</li>
  450. </ol>
  451. <p><strong><em>UI 图:</em></strong><br>
  452. <img src="./assets/%E4%B8%8B%E5%8D%95%E6%B5%81%E7%A8%8B%E5%9B%BE%E7%89%87/%E5%B7%B2%E6%94%AF%E4%BB%98%E3%80%81%E5%BE%85%E6%8E%A5%E5%8D%95.png" alt=""></p>
  453. <h5 id="技师接单">技师接单 </h5>
  454. <p><strong><em>后台逻辑:</em></strong></p>
  455. <ol>
  456. <li>技师接单,用户同步数据</li>
  457. <li><a href="#%E6%8E%A5%E5%8D%95">技师接单</a></li>
  458. </ol>
  459. <p><strong><em>UI 图:</em></strong><br>
  460. <img src="./assets/%E4%B8%8B%E5%8D%95%E6%B5%81%E7%A8%8B%E5%9B%BE%E7%89%87/%E6%8A%80%E5%B8%88%E7%A1%AE%E8%AE%A4%E6%8E%A5%E5%8D%95.png" alt=""></p>
  461. <h5 id="技师拒绝接单">技师拒绝接单 </h5>
  462. <p><strong><em>后台逻辑:</em></strong></p>
  463. <ol>
  464. <li>技师拒绝接单,客服介入,联系用户,更改技师或者用户取消订单退款</li>
  465. <li><a href="#%E6%8B%92%E7%BB%9D%E6%8E%A5%E5%8D%95">技师拒绝接单</a></li>
  466. </ol>
  467. <p><strong><em>UI 图:</em></strong><br>
  468. <img src="./assets/%E4%B8%8B%E5%8D%95%E6%B5%81%E7%A8%8B%E5%9B%BE%E7%89%87/%E6%8A%80%E5%B8%88%E6%8B%92%E7%BB%9D%E6%8E%A5%E5%8D%95.png" alt=""></p>
  469. <h5 id="订单超时">订单超时 </h5>
  470. <p><strong><em>后台逻辑:</em></strong></p>
  471. <ol>
  472. <li>技师没有在规定时间内接单,客服介入,联系技师</li>
  473. <li><a href="#%E8%AE%A2%E5%8D%95%E8%B6%85%E6%97%B6">订单超时</a> TODO: 客服介入后,对订单进行处理(更换技师、用户退款、取消订单、转公单等)</li>
  474. </ol>
  475. <h4 id="选择项目下单">选择项目下单 </h4>
  476. <div class="mermaid"> flowchart TD
  477. %% 主流程起点
  478. Start[开始] --&gt; Init[初始化订单]
  479. %% 订单创建阶段
  480. subgraph 订单创建
  481. Init --&gt; A1[获取用户位置]
  482. A1 --&gt; A2[查询区域服务]
  483. A2 --&gt; A3[用户选择服务]
  484. A3 --&gt; A4[选择地址/时间/优惠券]
  485. A4 --&gt; A5[创建空订单]
  486. end
  487. %% 抢单阶段
  488. subgraph 抢单流程
  489. A5 --&gt; B1[进入抢单池]
  490. B1 --&gt; B2[推送给技师]
  491. B2 --&gt; B3{是否有技师抢单?}
  492. B3 --&gt;|是| B4[展示技师列表]
  493. B3 --&gt;|否| B5[等待5-8分钟]
  494. B5 --&gt; B6[客服介入]
  495. end
  496. %% 用户选择阶段
  497. subgraph 用户选择
  498. B4 --&gt; C1{用户是否选择?}
  499. C1 --&gt;|是| C2[锁定技师]
  500. C1 --&gt;|否| C3[等待30分钟]
  501. C2 --&gt; C4[计算费用]
  502. C3 --&gt; B6
  503. end
  504. %% 支付阶段
  505. subgraph 支付流程
  506. C4 --&gt; D1[展示订单详情]
  507. D1 --&gt; D2{用户支付?}
  508. D2 --&gt;|是| D3[支付处理]
  509. D2 --&gt;|否| D4[3分钟超时]
  510. D3 --&gt; D5{支付结果}
  511. D5 --&gt;|成功| D6[更新订单状态]
  512. D5 --&gt;|失败| D7[客服介入]
  513. D4 --&gt; D8[解绑技师]
  514. end
  515. %% 服务阶段
  516. subgraph 服务执行
  517. D6 --&gt; E1[通知技师]
  518. E1 --&gt; jh1[技师拒绝订单]
  519. jh1 --&gt; jh2[客服介入?]
  520. jh2 --&gt;|技师接单| E2[技师出发]
  521. jh2 --&gt;|技师拒单| jh3[客服介入,联系用户?]
  522. jh3 --&gt; jh4[用户接受更换技师]
  523. jh4 --&gt; E2
  524. jh3 --&gt; jh5[用户不接受更换技师]
  525. jh5 --&gt; Cancel
  526. E1 --&gt; E2[技师出发]
  527. E2 --&gt; E3[服务进行中]
  528. E3 --&gt; E4[服务完成]
  529. end
  530. %% 取消订单流程
  531. subgraph 取消处理
  532. Cancel[取消订单] --&gt; F1[客服确认]
  533. F1 --&gt; F2{是否可挽回?}
  534. F2 --&gt;|是| F3[恢复订单]
  535. F2 --&gt;|否| F4[退款处理]
  536. end
  537. %% 异常处理连接
  538. D7 --&gt; Cancel
  539. B6 --&gt; Cancel
  540. D8 --&gt; B1
  541. %% 结束节点
  542. E4 --&gt; End[结束]
  543. F4 --&gt; End
  544. F3 --&gt; D1
  545. %% 样式定义
  546. classDef success fill:#baffc9,stroke:#333,stroke-width:2px;
  547. classDef warning fill:#ffffba,stroke:#333,stroke-width:2px;
  548. classDef error fill:#ffb3ba,stroke:#333,stroke-width:2px;
  549. classDef normal fill:#f9f9f9,stroke:#333,stroke-width:2px;
  550. %% 应用样式
  551. class D6,E4 success;
  552. class D7,B6,Cancel warning;
  553. class F4 error;
  554. class Start,End normal;
  555. click A1,A2,A3 href "#用户选择项目"
  556. click A4,A5,B1,B2 href "#创建抢单类型订单,推送给技师"
  557. click B3,B4 href "#有技师抢单"
  558. click B5,B6 href "#无技师抢单"
  559. click C1,C2,C4 href "#用户选择技师"
  560. click C3,B6 href "#用户不反选技师"
  561. click D2,D3,D6,E1 href "#支付成功"
  562. click jh1,jh2,jh3,jh4,jh5 href "#技师拒绝接单"
  563. click D4,D7,D8 href "#支付失败"
  564. click E2 href "#技师出发"
  565. </div><h5 id="用户选择项目-1">用户选择项目 </h5>
  566. <p><strong><em>后台逻辑:</em></strong></p>
  567. <ol>
  568. <li>传递用户当前位置信息</li>
  569. <li><a href="#%E8%8E%B7%E5%8F%96%E9%A1%B9%E7%9B%AE%E5%88%97%E8%A1%A8-%E6%8A%80%E5%B8%88%E5%BC%80%E9%80%9A%E7%A7%9F%E6%88%B7%E9%A1%B9%E7%9B%AE">服务项目列表</a></li>
  570. <li><a href="#%E8%8E%B7%E5%8F%96%E9%A1%B9%E7%9B%AE%E8%AF%A6%E6%83%85-%E7%A7%9F%E6%88%B7%E9%A1%B9%E7%9B%AE">服务项目详情</a></li>
  571. </ol>
  572. <p><strong><em>UI 图:</em></strong><br>
  573. <img src="./assets/%E7%94%A8%E6%88%B7%E9%80%89%E6%8B%A9%E9%A1%B9%E7%9B%AE%E4%B8%8B%E5%8D%95/%E9%80%89%E6%8B%A9%E9%A1%B9%E7%9B%AE.png" alt=""></p>
  574. <h5 id="创建抢单类型订单推送给技师">创建抢单类型订单,推送给技师 </h5>
  575. <p><strong><em>后台逻辑:</em></strong></p>
  576. <ol>
  577. <li>传递用户服务时间、服务地址、服务项目 id、优惠劵 id</li>
  578. <li><a href="#%E5%88%9B%E5%BB%BA%E8%AE%A2%E5%8D%95">创建订单</a></li>
  579. </ol>
  580. <p><strong><em>UI 图:</em></strong><br>
  581. <img src="./assets/%E7%94%A8%E6%88%B7%E9%80%89%E6%8B%A9%E9%A1%B9%E7%9B%AE%E4%B8%8B%E5%8D%95/%E4%B8%8B%E5%8D%95%E7%AD%89%E5%BE%85%E6%8A%80%E5%B8%88%E6%8A%A2%E5%8D%95.png" alt=""></p>
  582. <h5 id="有技师抢单">有技师抢单 </h5>
  583. <p><strong><em>后台逻辑:</em></strong></p>
  584. <ol>
  585. <li>传递技师 id,所抢订单 id,计算路费、技师代金卷等等一些逻辑</li>
  586. <li><a href="#%E7%94%A8%E6%88%B7%E5%8F%96%E6%B6%88%E8%AE%A2%E5%8D%95">用户取消订单</a></li>
  587. </ol>
  588. <p><strong><em>UI 图:</em></strong><br>
  589. <img src="./assets/%E7%94%A8%E6%88%B7%E9%80%89%E6%8B%A9%E9%A1%B9%E7%9B%AE%E4%B8%8B%E5%8D%95/%E6%9C%89%E6%8A%80%E5%B8%88%E6%8A%A2%E5%8D%95.png" alt=""></p>
  590. <h5 id="无技师抢单">无技师抢单 </h5>
  591. <p><strong><em>后台逻辑:</em></strong></p>
  592. <ol>
  593. <li>用户的抢单类型的订单无技师去抢,客服介入,联系附近技师</li>
  594. <li>包含超时的情况,记得处理</li>
  595. <li><a href="#%E7%94%A8%E6%88%B7%E5%8F%96%E6%B6%88%E8%AE%A2%E5%8D%95">用户取消订单</a></li>
  596. </ol>
  597. <p><strong><em>UI 图:</em></strong><br>
  598. <img src="./assets/%E7%94%A8%E6%88%B7%E9%80%89%E6%8B%A9%E9%A1%B9%E7%9B%AE%E4%B8%8B%E5%8D%95/%E6%97%A0%E6%8A%80%E5%B8%88%E6%8A%A2%E5%8D%95.png" alt=""></p>
  599. <h5 id="用户选择技师-1">用户选择技师 </h5>
  600. <p><strong><em>后台逻辑:</em></strong></p>
  601. <ol>
  602. <li>传递技师 id,所抢订单 id,用户 id,订单费用</li>
  603. <li>用户选择技师后,3 分钟内不支付,则技师解绑该订单,记得处理</li>
  604. <li><a href="#%E7%94%A8%E6%88%B7%E5%8F%96%E6%B6%88%E8%AE%A2%E5%8D%95">用户取消订单</a></li>
  605. <li><a href="#%E6%8C%87%E5%AE%9A%E6%8A%80%E5%B8%88%E4%BF%AE%E6%94%B9%E8%AE%A2%E5%8D%95">指定技师</a></li>
  606. </ol>
  607. <p><strong><em>UI 图:</em></strong><br>
  608. <img src="./assets/%E7%94%A8%E6%88%B7%E9%80%89%E6%8B%A9%E9%A1%B9%E7%9B%AE%E4%B8%8B%E5%8D%95/%E7%94%A8%E6%88%B7%E5%8F%8D%E9%80%89%E6%8A%80%E5%B8%88.png" alt=""></p>
  609. <h5 id="用户不反选技师">用户不反选技师 </h5>
  610. <p><strong><em>后台逻辑:</em></strong></p>
  611. <ol>
  612. <li>用户不反选技师</li>
  613. <li><a href="#%E7%94%A8%E6%88%B7%E5%8F%96%E6%B6%88%E8%AE%A2%E5%8D%95">用户取消订单</a></li>
  614. </ol>
  615. <p><strong><em>UI 图:</em></strong><br>
  616. <img src="./assets/%E7%94%A8%E6%88%B7%E9%80%89%E6%8B%A9%E9%A1%B9%E7%9B%AE%E4%B8%8B%E5%8D%95/%E7%94%A8%E6%88%B7%E4%B8%8D%E5%8F%8D%E9%80%89%E6%8A%80%E5%B8%88.png" alt=""></p>
  617. <h5 id="支付成功-1">支付成功 </h5>
  618. <p><strong><em>后台逻辑:</em></strong></p>
  619. <ol>
  620. <li>订单支付成功,技师和用户的推送提醒</li>
  621. <li><a href="#%E7%94%A8%E6%88%B7%E5%8F%96%E6%B6%88%E8%AE%A2%E5%8D%95">用户取消订单</a></li>
  622. </ol>
  623. <p><strong><em>UI 图:</em></strong><br>
  624. <img src="./assets/%E7%94%A8%E6%88%B7%E9%80%89%E6%8B%A9%E9%A1%B9%E7%9B%AE%E4%B8%8B%E5%8D%95/%E6%94%AF%E4%BB%98%E6%88%90%E5%8A%9F.png" alt=""></p>
  625. <h5 id="技师拒绝接单-1">技师拒绝接单 </h5>
  626. <p><strong><em>后台逻辑:</em></strong></p>
  627. <ol>
  628. <li>技师拒绝接单,客服介入,联系技师</li>
  629. <li><a href="#%E6%8E%A5%E5%8D%95">接单</a></li>
  630. <li><a href="#%E6%8B%92%E5%8D%95">拒单</a></li>
  631. <li>客服联系用户,用户接受更改技师或者取消订单</li>
  632. </ol>
  633. <p><strong><em>UI 图:</em></strong><br>
  634. <img src="./assets/%E7%94%A8%E6%88%B7%E9%80%89%E6%8B%A9%E9%A1%B9%E7%9B%AE%E4%B8%8B%E5%8D%95/%E6%8A%80%E5%B8%88%E6%8B%92%E7%BB%9D%E6%8E%A5%E5%8D%95.png" alt=""></p>
  635. <h5 id="支付失败-1">支付失败 </h5>
  636. <p><strong><em>后台逻辑:</em></strong></p>
  637. <ol>
  638. <li>支付失败,订单状态为待付款</li>
  639. <li>用户取消订单、选择技师、再次付款。存在超时的以及时间差的处理</li>
  640. <li><a href="#%E7%94%A8%E6%88%B7%E5%8F%96%E6%B6%88%E8%AE%A2%E5%8D%95">用户取消订单</a></li>
  641. <li><a href="#%E8%8E%B7%E5%8F%96%E6%94%AF%E4%BB%98%E9%85%8D%E7%BD%AE">支付订单</a></li>
  642. </ol>
  643. <p><strong><em>UI 图:</em></strong><br>
  644. <img src="./assets/%E7%94%A8%E6%88%B7%E9%80%89%E6%8B%A9%E9%A1%B9%E7%9B%AE%E4%B8%8B%E5%8D%95/%E6%94%AF%E4%BB%98%E5%A4%B1%E8%B4%A5.png" alt=""></p>
  645. <h5 id="技师出发">技师出发 </h5>
  646. <p><strong><em>后台逻辑:</em></strong></p>
  647. <ol>
  648. <li>技师出发,用户推送提醒</li>
  649. <li><a href="#%E7%94%A8%E6%88%B7%E5%8F%96%E6%B6%88%E8%AE%A2%E5%8D%95">用取消订单</a></li>
  650. </ol>
  651. <p></p>
  652. <h3 id="服务流程">服务流程 </h3>
  653. <p></p><div class="mermaid">flowchart TD
  654. %% 开始
  655. Start([开始服务流程]) --&gt; A
  656. %% 主要服务状态
  657. A[技师出发] --&gt; B[技师到达]
  658. B --&gt; C[开始服务]
  659. C --&gt; D[服务进行中]
  660. D --&gt; E[服务结束]
  661. E --&gt; F[用户确认技师离开]
  662. F --&gt; G[技师撤离]
  663. G --&gt; H[订单结算]
  664. H --&gt; EndNode([订单完成])
  665. %% 技师出发阶段异常
  666. A --&gt; A1{用户取消订单?}
  667. A1 --&gt;|是| A2[客服介入沟通]
  668. A2 --&gt; A3{用户是否继续?}
  669. A3 --&gt;|是| A
  670. A3 --&gt;|否| A4[技师撤离]
  671. A4 --&gt; A5[扣除违约金]
  672. A5 --&gt; EndNode
  673. A --&gt; B1{技师终止订单?}
  674. B1 --&gt;|是| B2[客服介入沟通]
  675. B2 --&gt; B3{技师是否继续?}
  676. B3 --&gt;|是| A
  677. B3 --&gt;|否| B4[客服联系用户]
  678. B4 --&gt; B5{是否更换技师?}
  679. B5 --&gt;|是| B6[重新分配技师]
  680. B6 --&gt; A
  681. B5 --&gt;|否| B7[订单结束]
  682. B7 --&gt; EndNode
  683. %% 技师到达阶段异常
  684. B --&gt; C1{线下用户取消订单?}
  685. C1 --&gt;|是| C2[客服介入沟通]
  686. C2 --&gt; C3{用户是否继续?}
  687. C3 --&gt;|是| B
  688. C3 --&gt;|否| C4[技师撤离]
  689. C4 --&gt; C5[扣除违约金]
  690. C5 --&gt; EndNode
  691. B --&gt; D1{联系不上用户?}
  692. D1 --&gt;|是| D2[技师等待]
  693. D2 --&gt; D3{等待&gt;10分钟?}
  694. D3 --&gt;|否| D2
  695. D3 --&gt;|是| D4[技师撤离]
  696. D4 --&gt; D5[扣除违约金]
  697. D5 --&gt; EndNode
  698. %% 服务进行中操作
  699. D --&gt; E1{用户结束订单?}
  700. E1 --&gt;|是| E2[更新订单状态]
  701. E2 --&gt; E
  702. D --&gt; F1{用户打赏?}
  703. F1 --&gt;|是| F2[创建打赏订单]
  704. F2 --&gt; D
  705. D --&gt; G1{用户加钟?}
  706. G1 --&gt;|是| G2[更新服务时长]
  707. G2 --&gt;G3{是否发生下一个客户服务时间冲突}
  708. G3 --&gt;|是|G4[客服介入]
  709. G4 --&gt; G5{技师和下一个用户协商往后延时?}
  710. G5 --&gt;|下一个用户不同意| G7[下一个用户与平台继续协商]
  711. G7 --&gt;G8{是否同意更换技师}
  712. G8 --&gt;|是| G9[更换技师]
  713. G8 --&gt;|否| G10[订单结束]
  714. G5 --&gt;|下一个用户同意| G6[更改下一订单开始服务时间]
  715. G6 --&gt; EndNode
  716. G2 --&gt; D
  717. %% 样式定义
  718. classDef default fill:#f9f9f9,stroke:#333,stroke-width:2px
  719. classDef startEnd fill:#b2dfdb,stroke:#004d40,stroke-width:2px
  720. classDef process fill:#c8e6c9,stroke:#1b5e20,stroke-width:2px
  721. classDef decision fill:#fff3e0,stroke:#e65100,stroke-width:2px
  722. %% 应用样式
  723. class Start,EndNode startEnd
  724. class A,B,C,D,E,F,G,H process
  725. class A1,B1,C1,D1,E1,F1,G1,A3,B3,B5,C3,D3 decision
  726. click A href "#技师出发"
  727. click A1 href "#技师出发中,用户取消订单"
  728. click B1 href "#技师出发中,技师终止订单"
  729. click B href "#技师到达"
  730. click C1 href "#技师到达中,用户线下取消订单"
  731. click D1 href "#技师到达,联系不上用户"
  732. click D href "#开始服务"
  733. click E1 href "#服务进行中,用户结束订单"
  734. click F1 href "#服务进行中,用户打赏"
  735. click G1 href "#服务进行中,用户加钟"
  736. click E href "#服务结束"
  737. click F href "#用户确认技师离开"
  738. click G href "#技师撤离"
  739. click H href "#订单结算"
  740. </div><h4 id="技师出发-1">技师出发 </h4>
  741. <p><strong><em>后台逻辑:</em></strong></p>
  742. <ol>
  743. <li>技师点击确认<a href="#%E5%87%BA%E5%8F%91">出发</a></li>
  744. </ol>
  745. <h4 id="技师出发中用户取消订单用户取消订单">技师出发中,用户<a href="#%E7%94%A8%E6%88%B7%E5%8F%96%E6%B6%88%E8%AE%A2%E5%8D%95">取消订单</a> </h4>
  746. <p><strong><em>后台逻辑:</em></strong></p>
  747. <ol>
  748. <li>技师未到达前,用户点击<a href="#%E7%94%A8%E6%88%B7%E5%8F%96%E6%B6%88%E8%AE%A2%E5%8D%95">取消订单</a>,算是订单结束,扣除违约金<br>
  749. TODO:技师到达前,用户取消订单,客服介入,联系用户,确认取消,订单取消,扣除违约金(50%项目金额+车费)</li>
  750. <li>线下客服介入,联系用户</li>
  751. </ol>
  752. <h4 id="技师出发中技师终止订单">技师出发中,技师终止订单 </h4>
  753. <p><strong><em>后台逻辑:</em></strong></p>
  754. <ol>
  755. <li>技师点击终止订单,扣除违约金,客服介入,联系技师<br>
  756. TODO: 技师无法线上终止订单,联系客服</li>
  757. </ol>
  758. <h4 id="技师到达前用户线下取消订单">技师到达前,用户线下取消订单 </h4>
  759. <p><strong><em>后台逻辑:</em></strong></p>
  760. <ol>
  761. <li>技师未到达前,用户线下<a href="#%E7%94%A8%E6%88%B7%E5%8F%96%E6%B6%88%E8%AE%A2%E5%8D%95">取消订单</a>,算是订单结束,扣除违约金<br>
  762. TODO:技师到达前,用户取消订单,客服介入,联系用户,确认取消,订单取消,扣除违约金(50%项目金额+车费)</li>
  763. <li>线下客服介入,联系用户,联系技师</li>
  764. </ol>
  765. <h4 id="技师到达联系不上用户">技师到达,联系不上用户 </h4>
  766. <p><strong><em>后台逻辑:</em></strong></p>
  767. <ol>
  768. <li>技师等待,等待时间超过 10 分钟,技师点击撤离,扣除违约金,订单结束</li>
  769. <li>客服介入,联系用户,联系技师</li>
  770. </ol>
  771. <h4 id="开始服务">开始服务 </h4>
  772. <p><strong><em>后台逻辑:</em></strong></p>
  773. <ol>
  774. <li>技师点击开始服务,进行扫码</li>
  775. </ol>
  776. <h4 id="服务进行中用户结束订单">服务进行中,用户结束订单 </h4>
  777. <p><strong><em>后台逻辑:</em></strong></p>
  778. <ol>
  779. <li>用户点击<a href="#%E7%BB%93%E6%9D%9F%E8%AE%A2%E5%8D%95">结束订单</a>,算是服务结束</li>
  780. </ol>
  781. <h4 id="服务进行中用户打赏">服务进行中,用户打赏 </h4>
  782. <p><strong><em>后台逻辑:</em></strong></p>
  783. <ol>
  784. <li>用户打赏,后台创建一个关联订单的子订单的打赏订单<br>
  785. TODO: 后台暂无打赏逻辑</li>
  786. </ol>
  787. <h4 id="服务进行中用户加钟">服务进行中,用户加钟 </h4>
  788. <p><strong><em>后台逻辑:</em></strong></p>
  789. <ol>
  790. <li>用户获取<a href="#%E8%8E%B7%E5%8F%96%E9%A1%B9%E7%9B%AE%E5%88%97%E8%A1%A8-%E5%8A%A0%E9%92%9F">加钟项目列表</a></li>
  791. <li>用户点击<a href="#%E5%8A%A0%E9%92%9F">加钟</a>,后台创建新的订单和目前的订单有关联即可</li>
  792. <li>在原有剩余的时长增加时长</li>
  793. </ol>
  794. <h4 id="服务结束">服务结束 </h4>
  795. <p><strong><em>后台逻辑:</em></strong></p>
  796. <ol>
  797. <li>服务时长结束,服务结束<br>
  798. TODO:系统自动结束订单</li>
  799. </ol>
  800. <h4 id="用户确认技师离开">用户确认技师离开 </h4>
  801. <p><strong><em>后台逻辑:</em></strong></p>
  802. <ol>
  803. <li>用户点击<a href="#%E7%A1%AE%E8%AE%A4%E6%8A%80%E5%B8%88%E7%A6%BB%E5%BC%80">确认技师离开</a></li>
  804. </ol>
  805. <h4 id="技师撤离">技师撤离 </h4>
  806. <p><strong><em>后台逻辑:</em></strong></p>
  807. <ol>
  808. <li>技师点击<a href="#%E6%92%A4%E7%A6%BB">撤离</a>,订单结束</li>
  809. </ol>
  810. <h4 id="订单结算">订单结算 </h4>
  811. <p><strong><em>后台逻辑:</em></strong></p>
  812. <ol>
  813. <li>订单结算</li>
  814. </ol>
  815. <p></p>
  816. <h3 id="推广用户">推广用户 </h3>
  817. <h3 id="推荐技师">推荐技师 </h3>
  818. <p></p><pre class="language-text">渠道:业务员、技师、用户三种角色
  819. - 渠道推荐技师:
  820. - 渠道永久拥推荐技师1%的接单奖
  821. - 渠道获取平台奖励的1000元上限,从推荐技师每次订单金额中3%中提取。
  822. </pre>
  823. <p></p>
  824. <h3 id="分账">分账 </h3>
  825. <p></p><h4 id="分账简介版">分账简介版 </h4>
  826. <ul>
  827. <li>
  828. <p>涉及到的角色用户、技师、业务员、代理、店铺、平台</p>
  829. </li>
  830. <li>
  831. <p>用户可以成为技师、业务员、代理、店铺</p>
  832. </li>
  833. <li>
  834. <p>技师、业务员、代理、店铺角色可以互相切换</p>
  835. </li>
  836. <li>
  837. <p>所有分账建立在最后平台所得订单金额</p>
  838. </li>
  839. <li>
  840. <p>订单分为上门订单和救急订单和店铺订单</p>
  841. <ul>
  842. <li>A 订单金额(上门订单) = 技师劳动所得 + 技师上级(上下级渠道) + 用户(二级渠道)+ 平台所得(平台+代理)</li>
  843. <li>B 订单金额(救急订单) = 平台抽成 10%</li>
  844. <li>c 订单金额(店铺订单)= 店铺所得 + 平台抽取 20%(渠道推荐用户 10%)</li>
  845. </ul>
  846. </li>
  847. <li>
  848. <p>前端要实现,用户可以申请任何角色以及角色之间的互相切换</p>
  849. </li>
  850. <li>
  851. <p>后端要实现,分账逻辑,分账金额,分账比例,分账时间,分账状态,分账记录</p>
  852. </li>
  853. </ul>
  854. <h4 id="分账流程设计">分账流程设计 </h4>
  855. <ul>
  856. <li>用到的人物 A 技师 B 用户 C 代理 D 业务员 E 店铺 F 平台 G 渠道</li>
  857. <li>订单分类
  858. <ul>
  859. <li>上门订单
  860. <ul>
  861. <li>B 用户对 A 技师下单</li>
  862. <li>A 技师接单</li>
  863. <li>A 技师服务完 B 用户</li>
  864. <li>B 用户确认离开</li>
  865. <li>A 技师撤离</li>
  866. <li>订单结束</li>
  867. <li></li>
  868. </ul>
  869. </li>
  870. <li>救急订单</li>
  871. <li>店铺订单</li>
  872. </ul>
  873. </li>
  874. </ul>
  875. <p></p>
  876. <h3 id="营销">营销 </h3>
  877. <p></p>
  878. <hr>
  879. <h2 id="业务模块">业务模块 </h2>
  880. <p></p><h3 id="一-用户">一、用户 </h3>
  881. <p></p><h4 id="发送验证码">发送验证码 </h4>
  882. <p><strong>参数</strong>:<br>
  883. - 手机号</p>
  884. <p><strong>后台逻辑</strong>:<br>
  885. - 生成验证码<br>
  886. - 发送验证码<br>
  887. - 返回验证码</p>
  888. <h4 id="用户登录">用户登录 </h4>
  889. <p><strong>参数</strong>:<br>
  890. - 手机号<br>
  891. - 验证码</p>
  892. <p><strong>后台逻辑</strong>:<br>
  893. - 验证验证码<br>
  894. - 根据手机号查询用户<br>
  895. - 如果用户不存在,则创建用户<br>
  896. - 用户状态为正常<br>
  897. - 生成token<br>
  898. - 返回token</p>
  899. <h4 id="获取微信授权">获取微信授权 </h4>
  900. <h4 id="微信登录">微信登录 </h4>
  901. <p><strong>参数</strong>:<br>
  902. - 微信openid</p>
  903. <p><strong>后台逻辑</strong>:<br>
  904. - 根据微信openid查询微信用户<br>
  905. - 如果微信用户不存在,则创建微信用户<br>
  906. - 用户状态为正常<br>
  907. - 生成token<br>
  908. - 返回token</p>
  909. <h4 id="用户退出">用户退出 </h4>
  910. <p><strong>参数</strong>:<br>
  911. - 用户编号 通过 Auth::id() 获取</p>
  912. <p><strong>后台逻辑</strong>:<br>
  913. - 清理用户token<br>
  914. - 返回退出成功</p>
  915. <h4 id="获取用户信息">获取用户信息 </h4>
  916. <p><strong>参数</strong>:<br>
  917. - 用户编号 通过 Auth::id() 获取</p>
  918. <p><strong>后台逻辑</strong>:<br>
  919. - 根据用户编号查询用户信息<br>
  920. - 关联查询用户钱包<br>
  921. - 钱包编号<br>
  922. - 钱包余额<br>
  923. - 返回用户信息</p>
  924. <h4 id="修改用户信息">修改用户信息 </h4>
  925. <p><strong>参数</strong>:<br>
  926. - 用户编号 通过 Auth::id() 获取<br>
  927. - 用户信息 通过路由获取</p>
  928. <p><strong>后台逻辑</strong>:<br>
  929. - 根据用户编号查询用户信息<br>
  930. - 修改用户信息<br>
  931. - 返回修改成功</p>
  932. <h4 id="用户钱包">用户钱包 </h4>
  933. <p><strong>参数</strong>:<br>
  934. - 用户编号 通过 Auth::id() 获取</p>
  935. <p><strong>后台逻辑</strong>:<br>
  936. - 查询钱包数据<br>
  937. - 角色为用户<br>
  938. - 角色编号为当前用户编号<br>
  939. - 返回钱包数据</p>
  940. <h4 id="用户提现">用户提现 </h4>
  941. <p><strong>参数</strong>:<br>
  942. - 用户编号 通过 Auth::id() 获取<br>
  943. - 提现金额 通过路由获取</p>
  944. <p><strong>后台逻辑</strong>:<br>
  945. - 参数校验<br>
  946. - 根据用户编号查询用户数据<br>
  947. - 用户状态为正常<br>
  948. - 提现金额不能小于最小提现金额<br>
  949. - 提现金额不能大于最大提现金额<br>
  950. - <a href="./%E6%8F%90%E7%8E%B0.md#%E6%8F%90%E7%8E%B0%E7%94%B3%E8%AF%B7">提现申请</a><br>
  951. - 角色为用户</p>
  952. <h4 id="用户注销">用户注销 </h4>
  953. <p><strong>参数</strong>:<br>
  954. - 用户编号 通过 Auth::id() 获取</p>
  955. <p><strong>后台逻辑</strong>:<br>
  956. - 根据用户编号查询用户数据<br>
  957. - 用户状态为正常<br>
  958. - 用户软删除<br>
  959. - 返回注销成功</p>
  960. <h4 id="用户反馈">用户反馈 </h4>
  961. <p><strong>参数</strong>:<br>
  962. - 用户编号 通过 Auth::id() 获取<br>
  963. - 反馈内容 通过路由获取</p>
  964. <p><strong>后台逻辑</strong>:<br>
  965. - 根据用户编号查询用户数据<br>
  966. - 用户状态为正常<br>
  967. - 保存反馈数据<br>
  968. - 返回反馈成功</p>
  969. <h4 id="用户评价">用户评价 </h4>
  970. <p><strong>参数</strong>:<br>
  971. - 用户编号 通过 Auth::id() 获取<br>
  972. - 技师编号 通过路由获取<br>
  973. - 评价内容 通过路由获取</p>
  974. <p><strong>后台逻辑</strong>:<br>
  975. - 根据用户编号查询用户数据<br>
  976. - 用户状态为正常<br>
  977. - 根据技师编号保存评价数据<br>
  978. - 返回评价成功</p>
  979. <h4 id="用户评价列表">用户评价列表 </h4>
  980. <p><strong>参数</strong>:<br>
  981. - 用户编号 通过 Auth::id() 获取<br>
  982. - 技师编号 通过路由获取</p>
  983. <p><strong>后台逻辑</strong>:<br>
  984. - 根据用户编号查询用户数据<br>
  985. - 用户状态为正常<br>
  986. - 根据技师编号查询评价列表<br>
  987. - 返回评价列表</p>
  988. <h4 id="申请技师">申请技师 </h4>
  989. <ul>
  990. <li>
  991. <p><strong>参数</strong>:</p>
  992. <ul>
  993. <li>用户编号 通过 Auth::id() 获取</li>
  994. </ul>
  995. </li>
  996. <li>
  997. <p><strong>后台逻辑</strong>:</p>
  998. <ul>
  999. <li>根据用户编号查询用户数据</li>
  1000. <li>用户状态为正常</li>
  1001. <li>保存技师申请数据</li>
  1002. <li>返回申请成功</li>
  1003. </ul>
  1004. </li>
  1005. </ul>
  1006. <h4 id="我的团队">我的团队 </h4>
  1007. <p><strong>参数</strong>:<br>
  1008. - 用户编号 通过 Auth::id() 获取</p>
  1009. <p><strong>后台逻辑</strong>:<br>
  1010. - 根据用户编号查询用户数据<br>
  1011. - 用户状态为正常<br>
  1012. - 查询团队列表<br>
  1013. - 返回团队列表</p>
  1014. <h4 id="钱包明细">钱包明细 </h4>
  1015. <p><strong>参数</strong>:<br>
  1016. - 用户编号 通过 Auth::id() 获取</p>
  1017. <p><strong>后台逻辑</strong>:<br>
  1018. - 根据用户编号查询用户数据<br>
  1019. - 用户状态为正常<br>
  1020. - 查询钱包明细<br>
  1021. - 返回钱包明细</p>
  1022. <h4 id="获取技师列表">获取技师列表 </h4>
  1023. <p><mark>todo: lbs near解决方案,获取附近技师列表</mark></p>
  1024. <p><strong>参数</strong>:<br>
  1025. - 用户编号 通过 Auth::id() 获取<br>
  1026. - 用户经纬度 通过路由获取</p>
  1027. <p><strong>后台逻辑</strong>:<br>
  1028. - 根据用户编号查询用户数据<br>
  1029. - 用户状态为正常<br>
  1030. - 根据用户经纬度查询范围内技师列表<br>
  1031. - 返回技师列表</p>
  1032. <h4 id="获取技师详情">获取技师详情 </h4>
  1033. <p><mark>todo: lbs near解决方案,计算技师距离</mark></p>
  1034. <p><strong>参数</strong>:<br>
  1035. - 用户编号 通过 Auth::id() 获取<br>
  1036. - 技师编号 通过路由获取<br>
  1037. - 用户经纬度 通过路由获取</p>
  1038. <p><strong>后台逻辑</strong>:<br>
  1039. - 根据用户编号查询用户数据<br>
  1040. - 用户状态为正常<br>
  1041. - 根据技师编号查询技师数据<br>
  1042. - 技师状态为正常<br>
  1043. - 技师认证通过<br>
  1044. - 计算技师距离<br>
  1045. - 返回技师数据、技师距离</p>
  1046. <h4 id="获取项目列表-技师开通租户项目">获取项目列表-技师开通租户项目 </h4>
  1047. <p><strong>参数</strong>:<br>
  1048. - 技师编号 通过路由获取<br>
  1049. - 区域地址 通过路由获取</p>
  1050. <p><strong>后台逻辑</strong>:<br>
  1051. - 根据技师编号查询技师数据<br>
  1052. - 技师状态为正常<br>
  1053. - 技师认证通过<br>
  1054. - 查询技师开通项目列表<br>
  1055. - 项目状态为正常<br>
  1056. - 根据区域地址、技师开通项目查询项目列表<br>
  1057. - 项目状态为正常<br>
  1058. - 返回项目列表</p>
  1059. <h4 id="获取项目详情-租户项目">获取项目详情-租户项目 </h4>
  1060. <p><strong>参数</strong>:<br>
  1061. - 项目编号 通过路由获取<br>
  1062. - 区域地址 通过路由获取</p>
  1063. <p><strong>后台逻辑</strong>:<br>
  1064. - <a href="#%E8%8E%B7%E5%8F%96%E7%A7%9F%E6%88%B7%E7%BC%96%E5%8F%B7">获取租户编号</a><br>
  1065. - <a href="#%E8%8E%B7%E5%8F%96%E9%A1%B9%E7%9B%AE%E8%AF%A6%E6%83%85-%E7%A7%9F%E6%88%B7%E9%A1%B9%E7%9B%AE">获取项目详情</a><br>
  1066. - 返回项目数据</p>
  1067. <p></p>
  1068. <h3 id="二-技师">二、技师 </h3>
  1069. <p></p><h4 id="获取基本信息">获取基本信息 </h4>
  1070. <p><strong>参数</strong>:<br>
  1071. - 用户编号 通过 Auth::id() 获取</p>
  1072. <p><strong>后台逻辑</strong>:<br>
  1073. - 查询技师数据<br>
  1074. - 用户编号<br>
  1075. - 返回技师数据</p>
  1076. <h4 id="设置基本信息">设置基本信息 </h4>
  1077. <p><strong>参数</strong>:<br>
  1078. - 用户编号 通过 Auth::id() 获取<br>
  1079. - 基本信息</p>
  1080. <p><strong>后台逻辑</strong>:<br>
  1081. - 查询技师<br>
  1082. - 用户编号<br>
  1083. - 状态正常<br>
  1084. - 创建技师认证记录<br>
  1085. - 技师编号<br>
  1086. - 基本信息<br>
  1087. - 返回设置成功</p>
  1088. <h4 id="获取认证信息">获取认证信息 </h4>
  1089. <p><strong>参数</strong>:<br>
  1090. - 用户编号 通过 Auth::id() 获取</p>
  1091. <p><strong>后台逻辑</strong>:<br>
  1092. - 查询技师<br>
  1093. - 用户编号<br>
  1094. - 返回技师数据</p>
  1095. <h4 id="设置认证信息">设置认证信息 </h4>
  1096. <p><strong>参数</strong>:<br>
  1097. - 用户编号 通过 Auth::id() 获取<br>
  1098. - 认证信息</p>
  1099. <p><strong>后台逻辑</strong>:<br>
  1100. - 查询技师<br>
  1101. - 用户编号<br>
  1102. - 状态正常<br>
  1103. - 创建技师认证记录<br>
  1104. - 技师编号<br>
  1105. - 认证信息<br>
  1106. - 返回设置成功</p>
  1107. <h4 id="获取项目">获取项目 </h4>
  1108. <p><strong>参数</strong>:<br>
  1109. - 用户编号 通过 Auth::id() 获取</p>
  1110. <p><strong>后台逻辑</strong>:<br>
  1111. - 查询技师<br>
  1112. - 用户编号<br>
  1113. - 状态正常<br>
  1114. - 认证通过<br>
  1115. - 查询开通项目<br>
  1116. - 返回项目</p>
  1117. <h4 id="设置项目">设置项目 </h4>
  1118. <p><strong>参数</strong>:<br>
  1119. - 用户编号 通过 Auth::id() 获取<br>
  1120. - 项目编号<br>
  1121. - 设置信息</p>
  1122. <p><strong>后台逻辑</strong>:<br>
  1123. - 查询技师<br>
  1124. - 用户编号<br>
  1125. - 状态正常<br>
  1126. - 认证通过<br>
  1127. - 查询开通项目<br>
  1128. - 项目编号<br>
  1129. - 更新开通项目<br>
  1130. - 设置信息<br>
  1131. - 返回设置成功</p>
  1132. <h4 id="获取钱包">获取钱包 </h4>
  1133. <p><strong>参数</strong>:<br>
  1134. - 用户编号 通过 Auth::id() 获取</p>
  1135. <p><strong>后台逻辑</strong>:<br>
  1136. - 查询技师<br>
  1137. - 用户编号<br>
  1138. - 状态正常<br>
  1139. - 认证通过<br>
  1140. - <a href="./%E9%92%B1%E5%8C%85.md#%E6%9F%A5%E8%AF%A2%E9%92%B1%E5%8C%85">查询钱包</a><br>
  1141. - 角色编号:技师编号<br>
  1142. - 角色:技师<br>
  1143. - 返回钱包数据</p>
  1144. <h4 id="获取钱包明细">获取钱包明细 </h4>
  1145. <p><strong>参数</strong>:<br>
  1146. - 用户编号 通过 Auth::id() 获取</p>
  1147. <p><strong>后台逻辑</strong>:<br>
  1148. - 查询技师<br>
  1149. - 用户编号<br>
  1150. - 状态正常<br>
  1151. - 认证通过<br>
  1152. - <a href="./%E9%92%B1%E5%8C%85.md#%E6%9F%A5%E8%AF%A2%E9%92%B1%E5%8C%85">查询钱包</a><br>
  1153. - 角色编号:技师编号<br>
  1154. - 角色:技师<br>
  1155. - <a href="./%E9%92%B1%E5%8C%85.md#%E9%92%B1%E5%8C%85%E6%98%8E%E7%BB%86">钱包明细</a><br>
  1156. - 钱包编号<br>
  1157. - 返回钱包明细数据</p>
  1158. <h4 id="提现">提现 </h4>
  1159. <p><strong>参数</strong>:<br>
  1160. - 用户编号 通过 Auth::id() 获取<br>
  1161. - 提现金额</p>
  1162. <p><strong>后台逻辑</strong>:<br>
  1163. - 查询技师<br>
  1164. - 用户编号<br>
  1165. - 状态正常<br>
  1166. - 认证通过<br>
  1167. - <a href="./%E9%92%B1%E5%8C%85.md#%E6%8F%90%E7%8E%B0">提现</a><br>
  1168. - 角色编号:技师编号<br>
  1169. - 角色:技师<br>
  1170. - 提现金额<br>
  1171. - 返回成功</p>
  1172. <h4 id="获取工时设置">获取工时设置 </h4>
  1173. <p><strong>参数</strong>:<br>
  1174. - 用户编号 通过 Auth::id() 获取</p>
  1175. <p><strong>后台逻辑</strong>:<br>
  1176. - 查询技师<br>
  1177. - 用户编号<br>
  1178. - 状态正常<br>
  1179. - 认证通过<br>
  1180. - 查询技师工时记录<br>
  1181. - 技师编号<br>
  1182. - 返回技师工时记录</p>
  1183. <h4 id="设置工时">设置工时 </h4>
  1184. <p><strong>参数</strong>:<br>
  1185. - 用户编号 通过 Auth::id() 获取<br>
  1186. - 工作时间<br>
  1187. - 工作状态</p>
  1188. <p><strong>后台逻辑</strong>:<br>
  1189. - 查询技师<br>
  1190. - 用户编号<br>
  1191. - 状态正常<br>
  1192. - 认证通过<br>
  1193. - 创建技师工时记录<br>
  1194. - 技师编号<br>
  1195. - 工作状态<br>
  1196. - 工作时间<br>
  1197. - 返回成功</p>
  1198. <p></p>
  1199. <h3 id="三-订单">三、订单 </h3>
  1200. <p></p><h4 id="公共接口">公共接口 </h4>
  1201. <h5 id="获取租户配置">获取租户配置 </h5>
  1202. <p><strong>参数</strong>:</p>
  1203. <ul>
  1204. <li>租户编号</li>
  1205. </ul>
  1206. <p><strong>后台逻辑</strong>:</p>
  1207. <ul>
  1208. <li>根据租户编号查询租户配置</li>
  1209. <li>返回租户配置</li>
  1210. </ul>
  1211. <h5 id="获取技师配置">获取技师配置 </h5>
  1212. <p><strong>参数</strong>:</p>
  1213. <ul>
  1214. <li>技师编号<br>
  1215. <strong>后台逻辑</strong>:</li>
  1216. <li>根据技师编号查询技师配置</li>
  1217. <li>返回技师配置</li>
  1218. </ul>
  1219. <h5 id="计算路费金额">计算路费金额 </h5>
  1220. <p><strong>参数1</strong>: 技师编号,租户编号,服务路程<br>
  1221. <strong>参数2</strong>: 技师编号,用户经纬度,服务路程<br>
  1222. <strong>后台逻辑</strong>:</p>
  1223. <ul>
  1224. <li>如果路由不存在租户编号
  1225. <ul>
  1226. <li>根据用户经纬度查询租户</li>
  1227. </ul>
  1228. </li>
  1229. <li>根据技师编号查询技师配置
  1230. <ul>
  1231. <li>技师是否收取路费</li>
  1232. <li>如果收取
  1233. <ul>
  1234. <li>根据租户编号查询租户配置</li>
  1235. <li>服务路程小于等于租户配置的最小路程
  1236. <ul>
  1237. <li>单程路费金额=租户配置的最小路程金额</li>
  1238. </ul>
  1239. </li>
  1240. <li>服务路程大于租户配置的最小路程
  1241. <ul>
  1242. <li>路程单位为公里</li>
  1243. <li>超出路程=服务路程减租户配置的最小路程</li>
  1244. <li>单程路费金额=租户配置的最小路费金额 加 (超出路程 乘 租户配置的每公里路程单价)</li>
  1245. </ul>
  1246. </li>
  1247. <li>如果技师配置为单程路费
  1248. <ul>
  1249. <li>路费金额=单程路费金额</li>
  1250. </ul>
  1251. </li>
  1252. <li>如果技师配置为往返路费
  1253. <ul>
  1254. <li>路费金额=单程路费金额*2</li>
  1255. </ul>
  1256. </li>
  1257. </ul>
  1258. </li>
  1259. <li>不收取
  1260. <ul>
  1261. <li>路费金额=0</li>
  1262. </ul>
  1263. </li>
  1264. <li>返回路费金额</li>
  1265. </ul>
  1266. </li>
  1267. </ul>
  1268. <h4 id="后台接口">后台接口 </h4>
  1269. <h5 id="支付订单回调">支付订单回调 </h5>
  1270. <p><strong>参数</strong>:</p>
  1271. <ul>
  1272. <li>外部交易号</li>
  1273. </ul>
  1274. <p><strong>后台逻辑</strong>:</p>
  1275. <ol>
  1276. <li>
  1277. <p>参数校验</p>
  1278. <ul>
  1279. <li>根据外部交易号,查询订单</li>
  1280. <li>如果订单支付类型为微信支付
  1281. <ul>
  1282. <li>根据外部交易号,查询微信支付统一下单接口
  1283. <ul>
  1284. <li>如果支付成功
  1285. <ul>
  1286. <li>根据外部交易号查询订单</li>
  1287. <li>订单是否存在</li>
  1288. <li>订单用户编号是否匹配</li>
  1289. <li>订单状态为未支付</li>
  1290. </ul>
  1291. </li>
  1292. </ul>
  1293. </li>
  1294. </ul>
  1295. </li>
  1296. </ul>
  1297. </li>
  1298. <li>
  1299. <p>事务处理</p>
  1300. <ul>
  1301. <li>修改订单状态为已支付</li>
  1302. <li>如果订单余额抵扣大于 0</li>
  1303. <li>根据订单的角色编号查询用户钱包
  1304. <ul>
  1305. <li>创建钱包明细
  1306. <ul>
  1307. <li>钱包编号</li>
  1308. <li>钱包明细类型为支付</li>
  1309. <li>钱包明细金额为订单余额抵扣金额</li>
  1310. <li>余额为钱包余额</li>
  1311. <li>冻结金额为钱包冻结金额</li>
  1312. <li>状态为已通过(已支付)</li>
  1313. </ul>
  1314. </li>
  1315. </ul>
  1316. </li>
  1317. <li>用户钱包数据开启更新锁表</li>
  1318. <li>扣除用户钱包余额</li>
  1319. <li><a href="#%E8%AE%A2%E5%8D%95%E5%8E%86%E5%8F%B2-%E6%94%AF%E4%BB%98">创建订单历史:支付</a></li>
  1320. </ul>
  1321. </li>
  1322. <li>
  1323. <p>发送异步抢单通知(比如对接极光推送)</p>
  1324. </li>
  1325. </ol>
  1326. <h5 id="开始服务-1">开始服务 </h5>
  1327. <p><strong>参数</strong>:<br>
  1328. - 订单编号, 核销码<br>
  1329. - 订单编号 通过路由获取<br>
  1330. - 核销码 通过路由获取</p>
  1331. <p><strong>后台逻辑</strong>:<br>
  1332. 1. 参数校验<br>
  1333. - 如果订单编号存在<br>
  1334. - 如果订单编号不为空,根据订单编号查询订单<br>
  1335. - 订单状态为待服务<br>
  1336. - 否则, 根据核销码查询订单<br>
  1337. - 订单状态为待服务<br>
  1338. - 根据订单接单技师查询用户技师数据<br>
  1339. - 技师状态为正常<br>
  1340. - 技师认证状态为已认证<br>
  1341. 2. 事务处理<br>
  1342. - 修改订单状态为服务中<br>
  1343. - <a href="#%E5%9B%9B-%E8%AE%A2%E5%8D%95%E5%8E%86%E5%8F%B2">创建订单历史:服务(扫码)</a><br>
  1344. 3. 发送异步抢单通知(比如对接极光推送)</p>
  1345. <h4 id="用户端接口">用户端接口 </h4>
  1346. <h5 id="获取租户">获取租户 </h5>
  1347. <p><strong>参数</strong>: - 区域编号</p>
  1348. <p><strong>后台逻辑</strong>:</p>
  1349. <ol>
  1350. <li>根据区域数据编码查询租户信息
  1351. <ul>
  1352. <li>如果租户信息不存在
  1353. <ul>
  1354. <li>则依次按照区域编码按市、省、全国逐步查询,直至查找到租户信息</li>
  1355. </ul>
  1356. </li>
  1357. <li>返回租户信息</li>
  1358. </ul>
  1359. </li>
  1360. </ol>
  1361. <h5 id="获取项目列表-租户项目">获取项目列表-租户项目 </h5>
  1362. <p><strong>参数</strong>:</p>
  1363. <ul>
  1364. <li>项目分类,租户编号</li>
  1365. </ul>
  1366. <p><strong>后台逻辑</strong>:</p>
  1367. <ul>
  1368. <li>根据项目分类和租户编号查询项目列表</li>
  1369. <li>返回项目列表</li>
  1370. </ul>
  1371. <h5 id="获取项目详情-租户项目-1">获取项目详情-租户项目 </h5>
  1372. <p><strong>参数</strong>: - 项目编号,租户编号</p>
  1373. <p><strong>后台逻辑</strong>:</p>
  1374. <ol>
  1375. <li>参数校验
  1376. <ul>
  1377. <li>根据项目编号查询项目
  1378. <ul>
  1379. <li>项目存在</li>
  1380. <li>项目状态为正常</li>
  1381. </ul>
  1382. </li>
  1383. <li>根据租户编号查询租户
  1384. <ul>
  1385. <li>租户存在</li>
  1386. <li>根据租户信息及项目编号查询租户项目数据
  1387. <ul>
  1388. <li>项目状态为正常</li>
  1389. </ul>
  1390. </li>
  1391. </ul>
  1392. </li>
  1393. </ul>
  1394. </li>
  1395. <li>返回租户项目详情</li>
  1396. </ol>
  1397. <h5 id="计算订单金额">计算订单金额 </h5>
  1398. <p><strong>参数</strong>:</p>
  1399. <ul>
  1400. <li>用户编号, 地址编号, 技师编号, 项目编号,租户编号, 余额抵扣</li>
  1401. <li>用户编号 通过 Auth::id() 获取</li>
  1402. <li>余额抵扣 - 0: 不使用 - 1: 使用</li>
  1403. </ul>
  1404. <p><strong>后台逻辑</strong>:</p>
  1405. <ol>
  1406. <li>参数校验
  1407. <ul>
  1408. <li>根据用户编号查询用户
  1409. <ul>
  1410. <li>用户状态为正常</li>
  1411. </ul>
  1412. </li>
  1413. <li>根据地址编号查询地址
  1414. <ul>
  1415. <li>用户编号</li>
  1416. <li>地址存在</li>
  1417. </ul>
  1418. </li>
  1419. <li>根据技师编号查询技师
  1420. <ul>
  1421. <li>技师状态为正常</li>
  1422. <li>技师认证状态为已认证</li>
  1423. </ul>
  1424. </li>
  1425. </ul>
  1426. </li>
  1427. <li>计算金额
  1428. <ul>
  1429. <li>订单金额=项目金额+路费金额+打赏金额-优惠卷金额</li>
  1430. <li>项目金额=<a href="#%E9%A1%B9%E7%9B%AE%E8%AF%A6%E6%83%85">项目详情</a>的项目金额</li>
  1431. <li>路费金额=<a href="#%E8%AE%A1%E7%AE%97%E8%B7%AF%E8%B4%B9%E9%87%91%E9%A2%9D">路费金额</a></li>
  1432. <li>如果存在优惠卷编码,则根据优惠卷编号查询优惠卷
  1433. <ul>
  1434. <li>优惠卷状态为正常</li>
  1435. <li>优惠金额 = 优惠卷金额</li>
  1436. </ul>
  1437. </li>
  1438. <li>否则优惠金额 = 0</li>
  1439. <li>如果路由存在参数订单编号
  1440. <ul>
  1441. <li>打赏金额=订单打赏金额</li>
  1442. <li>否则打赏金额 = 0</li>
  1443. </ul>
  1444. </li>
  1445. <li>如果使用余额抵扣
  1446. <ul>
  1447. <li>根据用户编号查询用户钱包</li>
  1448. <li>用户钱包余额大于等于订单金额
  1449. <ul>
  1450. <li>余额抵扣金额=订单金额</li>
  1451. <li>实付金额=0</li>
  1452. </ul>
  1453. </li>
  1454. <li>否则
  1455. <ul>
  1456. <li>余额抵扣金额=用户钱包余额</li>
  1457. <li>实付金额=订单金额-余额抵扣金额</li>
  1458. </ul>
  1459. </li>
  1460. </ul>
  1461. </li>
  1462. <li>否则
  1463. <ul>
  1464. <li>余额抵扣金额=0</li>
  1465. <li>实付金额=订单金额</li>
  1466. </ul>
  1467. </li>
  1468. <li>返回
  1469. <ul>
  1470. <li>订单金额</li>
  1471. <li>余额抵扣金额</li>
  1472. <li>实付金额</li>
  1473. <li>优惠卷金额</li>
  1474. <li>打赏金额</li>
  1475. <li>项目金额</li>
  1476. <li>路费金额</li>
  1477. </ul>
  1478. </li>
  1479. </ul>
  1480. </li>
  1481. </ol>
  1482. <h5 id="创建订单">创建订单 </h5>
  1483. <p><strong>参数</strong>:</p>
  1484. <ul>
  1485. <li>用户编号, 项目编号, 地址编号, 技师编号,余额抵扣</li>
  1486. <li>用户编号 通过 Auth::id() 获取</li>
  1487. <li>余额抵扣 - 0: 不使用 - 1: 使用</li>
  1488. <li>订单编号</li>
  1489. </ul>
  1490. <p><strong>涉及表和关键列</strong>:</p>
  1491. <ul>
  1492. <li>
  1493. <p>订单表</p>
  1494. <ul>
  1495. <li>订单类型字段
  1496. <ul>
  1497. <li>0: 正常订单</li>
  1498. <li>1: 抢单订单</li>
  1499. </ul>
  1500. </li>
  1501. <li>状态字段
  1502. <ul>
  1503. <li>0:待支付</li>
  1504. <li>1:待接单</li>
  1505. <li>2:待服务</li>
  1506. <li>3:服务中</li>
  1507. <li>4:服务结束</li>
  1508. <li>5:完成</li>
  1509. <li>6:取消</li>
  1510. </ul>
  1511. </li>
  1512. <li>支付类型字段
  1513. <ul>
  1514. <li>0: 余额支付</li>
  1515. <li>1: 微信支付</li>
  1516. <li>2: 支付宝支付</li>
  1517. </ul>
  1518. </li>
  1519. <li>订单类型
  1520. <ul>
  1521. <li>0:常规订单</li>
  1522. <li>1:抢单订单</li>
  1523. </ul>
  1524. </li>
  1525. </ul>
  1526. </li>
  1527. <li>
  1528. <p>用户表</p>
  1529. <ul>
  1530. <li>状态字段:status
  1531. <ul>
  1532. <li>0: 禁用</li>
  1533. <li>1: 正常</li>
  1534. </ul>
  1535. </li>
  1536. </ul>
  1537. </li>
  1538. <li>
  1539. <p>用户地址表</p>
  1540. </li>
  1541. <li>
  1542. <p>项目表</p>
  1543. <ul>
  1544. <li>状态字段
  1545. <ul>
  1546. <li>0: 禁用</li>
  1547. <li>1: 正常</li>
  1548. </ul>
  1549. </li>
  1550. </ul>
  1551. </li>
  1552. <li>
  1553. <p>技师表</p>
  1554. <ul>
  1555. <li>状态字段
  1556. <ul>
  1557. <li>0: 禁用</li>
  1558. <li>1: 正常</li>
  1559. </ul>
  1560. </li>
  1561. </ul>
  1562. </li>
  1563. </ul>
  1564. <p><strong>后台逻辑</strong>:</p>
  1565. <ol>
  1566. <li>
  1567. <p>参数校验</p>
  1568. <ul>
  1569. <li>根据用户编号查询用户
  1570. <ul>
  1571. <li>用户状态为正常</li>
  1572. </ul>
  1573. </li>
  1574. <li>根据地址编号查询地址
  1575. <ul>
  1576. <li>用户编号</li>
  1577. <li>地址存在</li>
  1578. </ul>
  1579. </li>
  1580. <li>如果订单类型为常规
  1581. <ul>
  1582. <li>根据技师编号查询技师
  1583. <ul>
  1584. <li>技师状态为正常</li>
  1585. <li>技师认证状态为已认证</li>
  1586. </ul>
  1587. </li>
  1588. </ul>
  1589. </li>
  1590. <li>根据租户编号查询项目
  1591. <ul>
  1592. <li>项目存在</li>
  1593. <li>项目状态为正常</li>
  1594. </ul>
  1595. </li>
  1596. </ul>
  1597. </li>
  1598. <li>
  1599. <p>事务处理</p>
  1600. <ul>
  1601. <li>
  1602. <p>如果存在订单编号</p>
  1603. <ul>
  1604. <li>新订单类型为加钟</li>
  1605. </ul>
  1606. </li>
  1607. <li>
  1608. <p>否则</p>
  1609. <ul>
  1610. <li>新订单类型为常规订单</li>
  1611. </ul>
  1612. </li>
  1613. <li>
  1614. <p>创建新订单数据</p>
  1615. <ul>
  1616. <li>请自动填写相同名称的字段</li>
  1617. <li>如果订单类型为常规订单
  1618. <ul>
  1619. <li>指定技师</li>
  1620. </ul>
  1621. </li>
  1622. <li>订单状态为未支付</li>
  1623. <li>订单金额=<a href="#%E8%AE%A1%E7%AE%97%E8%AE%A2%E5%8D%95%E9%87%91%E9%A2%9D">计算订单金额</a>:订单金额</li>
  1624. <li>余额抵扣金额=<a href="#%E8%AE%A1%E7%AE%97%E8%AE%A2%E5%8D%95%E9%87%91%E9%A2%9D">计算订单金额</a>:余额抵扣金额</li>
  1625. <li>实付金额=<a href="#%E8%AE%A1%E7%AE%97%E8%AE%A2%E5%8D%95%E9%87%91%E9%A2%9D">计算订单金额</a>:实付金额</li>
  1626. <li>优惠卷金额=<a href="#%E8%AE%A1%E7%AE%97%E8%AE%A2%E5%8D%95%E9%87%91%E9%A2%9D">计算订单金额</a>:优惠卷金额</li>
  1627. <li>打赏金额=<a href="#%E8%AE%A1%E7%AE%97%E8%AE%A2%E5%8D%95%E9%87%91%E9%A2%9D">计算订单金额</a>:打赏金额</li>
  1628. <li>项目金额=<a href="#%E8%AE%A1%E7%AE%97%E8%AE%A2%E5%8D%95%E9%87%91%E9%A2%9D">计算订单金额</a>:项目金额</li>
  1629. <li>如果新订单类型为加钟
  1630. <ul>
  1631. <li>路费金额=0</li>
  1632. </ul>
  1633. </li>
  1634. <li>如果新订单类型为常规订单
  1635. <ul>
  1636. <li>路费金额=<a href="#%E8%AE%A1%E7%AE%97%E8%B7%AF%E8%B4%B9%E9%87%91%E9%A2%9D">计算路费金额</a></li>
  1637. </ul>
  1638. </li>
  1639. <li>如果使用余额抵扣,并且实付金额为 0
  1640. <ul>
  1641. <li>订单支付方式为余额支付</li>
  1642. </ul>
  1643. </li>
  1644. </ul>
  1645. </li>
  1646. <li>
  1647. <p>如果新订单类型为加钟</p>
  1648. <ul>
  1649. <li><a href="#%E8%AE%A2%E5%8D%95%E5%8E%86%E5%8F%B2-%E5%8A%A0%E9%92%9F">创建订单历史数据:加钟</a></li>
  1650. </ul>
  1651. </li>
  1652. <li>
  1653. <p>如果新订单类型为常规订单</p>
  1654. <ul>
  1655. <li><a href="#%E8%AE%A2%E5%8D%95%E5%8E%86%E5%8F%B2-%E4%B8%8B%E5%8D%95">创建订单历史数据:下单</a></li>
  1656. </ul>
  1657. </li>
  1658. <li>
  1659. <p>如果订单支付方式为余额支付</p>
  1660. <ul>
  1661. <li>更改订单状态为已支付</li>
  1662. <li><a href="#%E8%AE%A2%E5%8D%95%E5%8E%86%E5%8F%B2-%E6%94%AF%E4%BB%98">创建订单历史数据:支付</a></li>
  1663. <li>存入技师排班数据</li>
  1664. <li>返回订单编号</li>
  1665. </ul>
  1666. </li>
  1667. <li>
  1668. <p>否则</p>
  1669. <ul>
  1670. <li><a href="#%E6%94%AF%E4%BB%98%E8%AE%A2%E5%8D%95(%E9%85%8D%E7%BD%AE)">支付订单(配置)</a></li>
  1671. </ul>
  1672. </li>
  1673. </ul>
  1674. </li>
  1675. <li>
  1676. <p>发送异步抢单通知(比如对接极光推送)</p>
  1677. </li>
  1678. </ol>
  1679. <h5 id="获取项目列表-加钟">获取项目列表-加钟 </h5>
  1680. <p><strong>参数</strong>:</p>
  1681. <ul>
  1682. <li>项目编号</li>
  1683. </ul>
  1684. <p><strong>后台逻辑</strong>:</p>
  1685. <ul>
  1686. <li><a href="#%E8%8E%B7%E5%8F%96%E9%A1%B9%E7%9B%AE%E5%88%97%E8%A1%A8-%E7%A7%9F%E6%88%B7%E9%A1%B9%E7%9B%AE">获取项目列表</a>
  1687. <ul>
  1688. <li>项目分类为加钟</li>
  1689. </ul>
  1690. </li>
  1691. <li>返回项目列表</li>
  1692. </ul>
  1693. <h5 id="加钟">加钟 </h5>
  1694. <p><strong>参数</strong>:</p>
  1695. <ul>
  1696. <li>用户编号, 订单编号</li>
  1697. <li>用户编号 通过 Auth::id() 获取</li>
  1698. <li>订单编号 通过路由获取</li>
  1699. </ul>
  1700. <p><strong>后台逻辑</strong>:</p>
  1701. <ul>
  1702. <li>根据订单编号查询订单</li>
  1703. <li><a href="#%E5%88%9B%E5%BB%BA%E8%AE%A2%E5%8D%95">创建订单</a></li>
  1704. </ul>
  1705. <h5 id="修改订单">修改订单 </h5>
  1706. <p><strong>参数</strong>:</p>
  1707. <ul>
  1708. <li>用户编号, 订单编号, 技师编号</li>
  1709. <li>用户编号 通过 Auth::id() 获取</li>
  1710. </ul>
  1711. <p><strong>后台逻辑</strong>:</p>
  1712. <h5 id="指定技师修改订单">指定技师(修改订单) </h5>
  1713. <p><strong>参数</strong>:</p>
  1714. <ul>
  1715. <li>用户编号, 订单编号, 技师编号</li>
  1716. <li>用户编号 通过 Auth::id() 获取</li>
  1717. </ul>
  1718. <p><strong>后台逻辑</strong>:</p>
  1719. <ol>
  1720. <li>参数校验
  1721. <ul>
  1722. <li>查询用户数据
  1723. <ul>
  1724. <li>用户编号</li>
  1725. <li>用户状态为正常</li>
  1726. </ul>
  1727. </li>
  1728. <li>查询订单数据
  1729. <ul>
  1730. <li>用户编号</li>
  1731. <li>订单编号</li>
  1732. <li>订单状态为待抢单或待支付或已拒绝</li>
  1733. </ul>
  1734. </li>
  1735. <li>查询技师数据
  1736. <ul>
  1737. <li>技师编号</li>
  1738. <li>技师状态为正常</li>
  1739. <li>技师认证状态为已认证</li>
  1740. </ul>
  1741. </li>
  1742. <li>查询技师排班数据
  1743. <ul>
  1744. <li>技师编号</li>
  1745. <li>排班日期为订单服务日期</li>
  1746. <li>排班状态为空闲</li>
  1747. </ul>
  1748. </li>
  1749. </ul>
  1750. </li>
  1751. <li>事务处理</li>
  1752. </ol>
  1753. <ul>
  1754. <li>
  1755. <p>修改订单数据</p>
  1756. <ul>
  1757. <li>订单技师为当前技师编号</li>
  1758. <li>订单状态为未支付
  1759. <ul>
  1760. <li>订单金额=<a href="#%E8%AE%A1%E7%AE%97%E8%AE%A2%E5%8D%95%E9%87%91%E9%A2%9D">计算订单金额</a>:订单金额</li>
  1761. <li>余额抵扣金额=<a href="#%E8%AE%A1%E7%AE%97%E8%AE%A2%E5%8D%95%E9%87%91%E9%A2%9D">计算订单金额</a>:余额抵扣金额</li>
  1762. <li>实付金额=<a href="#%E8%AE%A1%E7%AE%97%E8%AE%A2%E5%8D%95%E9%87%91%E9%A2%9D">计算订单金额</a>:实付金额</li>
  1763. <li>优惠卷金额=<a href="#%E8%AE%A1%E7%AE%97%E8%AE%A2%E5%8D%95%E9%87%91%E9%A2%9D">计算订单金额</a>:优惠卷金额</li>
  1764. <li>打赏金额=<a href="#%E8%AE%A1%E7%AE%97%E8%AE%A2%E5%8D%95%E9%87%91%E9%A2%9D">计算订单金额</a>:打赏金额</li>
  1765. <li>项目金额=<a href="#%E8%AE%A1%E7%AE%97%E8%AE%A2%E5%8D%95%E9%87%91%E9%A2%9D">计算订单金额</a>:项目金额</li>
  1766. <li>路费金额=<a href="#%E8%AE%A1%E7%AE%97%E8%AE%A2%E5%8D%95%E9%87%91%E9%A2%9D">计算订单金额</a>:路费金额</li>
  1767. <li>如果使用余额抵扣,并且实付金额为 0
  1768. <ul>
  1769. <li>订单支付方式为余额支付</li>
  1770. </ul>
  1771. </li>
  1772. <li>如果订单支付方式为余额支付
  1773. <ul>
  1774. <li>更改订单状态为已支付</li>
  1775. <li><a href="#%E8%AE%A2%E5%8D%95%E5%8E%86%E5%8F%B2-%E6%94%AF%E4%BB%98">创建订单历史数据:支付</a></li>
  1776. </ul>
  1777. </li>
  1778. <li>否则
  1779. <ul>
  1780. <li><a href="#%E6%94%AF%E4%BB%98%E8%AE%A2%E5%8D%95(%E9%85%8D%E7%BD%AE)">支付订单(配置)</a></li>
  1781. </ul>
  1782. </li>
  1783. </ul>
  1784. </li>
  1785. <li>订单状态为已支付
  1786. <ul>
  1787. <li>订单状态为已接单</li>
  1788. </ul>
  1789. </li>
  1790. </ul>
  1791. </li>
  1792. <li>
  1793. <p><a href="./%E6%A8%A1%E5%9E%8B/%E8%AE%A2%E5%8D%95%E8%AE%B0%E5%BD%95.md#%E6%8C%87%E6%B4%BE%E6%8A%80%E5%B8%88">创建订单历史数据:指定技师</a></p>
  1794. </li>
  1795. <li>
  1796. <p><a href="./%E6%A8%A1%E5%9E%8B/%E8%AE%A2%E5%8D%95%E8%AE%B0%E5%BD%95.md#%E6%8E%A5%E5%8D%95">创建订单历史数据:技师接单</a></p>
  1797. <ul>
  1798. <li>备注为抢单成功</li>
  1799. </ul>
  1800. </li>
  1801. <li>
  1802. <p><a href="./%E6%A8%A1%E5%9E%8B/%E6%8A%A2%E5%8D%95%E6%B1%A0.md#%E9%80%89%E6%8B%A9%E6%8A%80%E5%B8%88">抢单池指定技师</a></p>
  1803. </li>
  1804. <li>
  1805. <p>修改技师排班数据</p>
  1806. <ul>
  1807. <li>技师编号</li>
  1808. <li>排班日期为订单服务日期</li>
  1809. <li>排班状态改为忙碌</li>
  1810. </ul>
  1811. </li>
  1812. </ul>
  1813. <ol start="3">
  1814. <li>发送异步抢单通知(比如对接极光推送)</li>
  1815. </ol>
  1816. <h5 id="获取支付配置">获取支付配置 </h5>
  1817. <p><strong>参数</strong>:</p>
  1818. <ul>
  1819. <li>用户编号, 订单编号</li>
  1820. <li>用户编号 通过 Auth::id() 获取</li>
  1821. </ul>
  1822. <p><strong>后台逻辑</strong>:</p>
  1823. <ol>
  1824. <li>参数校验
  1825. <ul>
  1826. <li>根据用户编号查询用户
  1827. <ul>
  1828. <li>用户状态是否开启</li>
  1829. </ul>
  1830. </li>
  1831. <li>根据订单编号查询订单
  1832. <ul>
  1833. <li>订单是否存在</li>
  1834. <li>订单用户编号是否匹配</li>
  1835. <li>订单状态为未支付</li>
  1836. </ul>
  1837. </li>
  1838. </ul>
  1839. </li>
  1840. <li>生成微信 JSAPI 支付配置
  1841. <ul>
  1842. <li>外部交易号</li>
  1843. <li>支付配置</li>
  1844. </ul>
  1845. </li>
  1846. <li>修改订单外部交易号为微信外部交易号</li>
  1847. <li>发送异步抢单通知(比如对接极光推送)</li>
  1848. <li>返回微信 JSAPI 支付配置</li>
  1849. </ol>
  1850. <h5 id="获取订单列表">获取订单列表 </h5>
  1851. <p><strong>参数</strong>: - 用户编号 通过 Auth::id() 获取</p>
  1852. <p><strong>后台逻辑</strong>: - 根据用户编号查询订单列表 - 返回订单列表</p>
  1853. <h5 id="获取订单详情">获取订单详情 </h5>
  1854. <p><strong>参数</strong>: - 用户编号 通过 Auth::id() 获取 - 订单编号</p>
  1855. <p><strong>后台逻辑</strong>: - 根据用户编号、订单编号查询订单详情 - 返回订单详情</p>
  1856. <h5 id="订单退款">订单退款 </h5>
  1857. <p><strong>参数</strong>:<br>
  1858. - 用户编号 通过 Auth::id() 获取<br>
  1859. - 订单编号 通过路由获取</p>
  1860. <p><strong>涉及表和关键列</strong>:<br>
  1861. - 订单表<br>
  1862. - 字段:编号, 用户编号, 状态<br>
  1863. - 状态<br>
  1864. - 待支付<br>
  1865. - 待服务<br>
  1866. - 待评价<br>
  1867. - 已完成<br>
  1868. - 已取消<br>
  1869. - 订单历史记录表<br>
  1870. - 字段:历史记录编号, 订单编号, 角色, 角色编号, 状态<br>
  1871. - 角色<br>
  1872. - 用户<br>
  1873. - 技师<br>
  1874. - 代理<br>
  1875. - 状态<br>
  1876. - 下单<br>
  1877. - 接单<br>
  1878. - 出发<br>
  1879. - 到达<br>
  1880. - 开始<br>
  1881. - 结束<br>
  1882. - 撤离<br>
  1883. - 取消(退款)</p>
  1884. <p><strong>后台逻辑</strong>:</p>
  1885. <ol>
  1886. <li>查询订单</li>
  1887. </ol>
  1888. <ul>
  1889. <li>订单编号</li>
  1890. <li>订单状态为待服务</li>
  1891. <li>用户编号</li>
  1892. </ul>
  1893. <ol start="2">
  1894. <li>更新数据
  1895. <ul>
  1896. <li>开启事务</li>
  1897. <li>更新订单
  1898. <ul>
  1899. <li>锁定数据</li>
  1900. </ul>
  1901. </li>
  1902. <li>状态为已退款</li>
  1903. <li><a href="./%E6%A8%A1%E5%9E%8B/%E8%AE%A2%E5%8D%95%E8%AE%B0%E5%BD%95.md#%E9%80%80%E6%AC%BE">添加订单退款记录</a></li>
  1904. <li><a href="./%E9%92%B1%E5%8C%85.md#%E9%80%80%E6%AC%BE">钱包-退款</a></li>
  1905. <li>提交事务</li>
  1906. </ul>
  1907. </li>
  1908. </ol>
  1909. <h5 id="订单初始化-前端初始化">订单初始化-前端初始化 </h5>
  1910. <p><strong>参数</strong>:</p>
  1911. <ul>
  1912. <li>用户编号 通过 Auth::id() 获取</li>
  1913. <li>技师编号 通过路由获取</li>
  1914. <li>区域编号 通过路由获取</li>
  1915. <li>项目编号 通过路由获取</li>
  1916. </ul>
  1917. <p><strong>后台逻辑</strong>:</p>
  1918. <ul>
  1919. <li>根据用户编号查询钱包数据</li>
  1920. <li>根据用户编号查询用户默认地址数据
  1921. <ul>
  1922. <li>如果存在
  1923. <ul>
  1924. <li>区域编号:默认地址区域编码</li>
  1925. </ul>
  1926. </li>
  1927. </ul>
  1928. </li>
  1929. <li>根据技师编号查询技师数据</li>
  1930. <li>根据技师编号查询技师排班数据</li>
  1931. <li>根据用户编号查询用户优惠卷数据</li>
  1932. <li><a href="#%E8%8E%B7%E5%8F%96%E7%A7%9F%E6%88%B7">获取租户</a></li>
  1933. <li><a href="#%E8%8E%B7%E5%8F%96%E9%A1%B9%E7%9B%AE%E8%AF%A6%E6%83%85-%E7%A7%9F%E6%88%B7%E9%A1%B9%E7%9B%AE">租户项目详情</a></li>
  1934. <li><a href="#%E8%AE%A1%E7%AE%97%E8%AE%A2%E5%8D%95%E9%87%91%E9%A2%9D">计算订单金额</a></li>
  1935. <li>返回钱包数据、技师数据、项目详情、地址数据、排班数据、订单金额、优惠卷数据</li>
  1936. </ul>
  1937. <h5 id="结束订单">结束订单 </h5>
  1938. <p><strong>参数</strong>:</p>
  1939. <ul>
  1940. <li>用户编号 通过 Auth::id() 获取</li>
  1941. <li>订单编号 通过路由获取</li>
  1942. </ul>
  1943. <p><strong>后台逻辑</strong>:</p>
  1944. <ul>
  1945. <li>根据用户编号查询订单列表</li>
  1946. <li><a href="./%E6%A8%A1%E5%9E%8B/%E8%AE%A2%E5%8D%95%E8%AE%B0%E5%BD%95.md#%E7%BB%93%E6%9D%9F">添加订单结束记录</a></li>
  1947. <li>修改订单状态为服务结束</li>
  1948. </ul>
  1949. <h5 id="确认技师离开">确认技师离开 </h5>
  1950. <p><strong>参数</strong>:</p>
  1951. <ul>
  1952. <li>用户编号 通过 Auth::id() 获取</li>
  1953. <li>订单编号 通过路由获取</li>
  1954. </ul>
  1955. <p><strong>后台逻辑</strong>:</p>
  1956. <ul>
  1957. <li>根据用户编号查询订单列表</li>
  1958. <li><a href="./%E6%A8%A1%E5%9E%8B/%E8%AE%A2%E5%8D%95%E8%AE%B0%E5%BD%95.md#%E6%92%A4%E7%A6%BB">添加订单撤离记录</a></li>
  1959. <li>修改订单状态为允许撤离</li>
  1960. </ul>
  1961. <h5 id="用户取消订单">用户取消订单 </h5>
  1962. <p><strong>参数</strong>:</p>
  1963. <ul>
  1964. <li>用户编号 通过 Auth::id() 获取</li>
  1965. <li>订单编号 通过路由获取</li>
  1966. </ul>
  1967. <p><strong>后台逻辑</strong>:</p>
  1968. <ul>
  1969. <li>根据用户编号查询订单列表</li>
  1970. <li><a href="./%E6%A8%A1%E5%9E%8B/%E8%AE%A2%E5%8D%95%E8%AE%B0%E5%BD%95.md#%E5%8F%96%E6%B6%88">添加订单取消记录</a></li>
  1971. <li>修改订单状态为已取消</li>
  1972. </ul>
  1973. <h4 id="技师端接口">技师端接口 </h4>
  1974. <h5 id="获取订单列表抢单">获取订单列表(抢单) </h5>
  1975. <p><strong>参数</strong>:</p>
  1976. <ul>
  1977. <li>用户编号 通过 Auth::id() 获取</li>
  1978. </ul>
  1979. <p><strong>后台逻辑</strong>:</p>
  1980. <ol>
  1981. <li>参数校验
  1982. <ul>
  1983. <li>根据用户编号查询用户技师数据
  1984. <ul>
  1985. <li>技师状态为正常</li>
  1986. <li>技师认证状态为已认证</li>
  1987. </ul>
  1988. </li>
  1989. </ul>
  1990. </li>
  1991. <li><a href="#%E8%8E%B7%E5%8F%96%E6%8A%80%E5%B8%88%E9%85%8D%E7%BD%AE">获取技师配置</a>
  1992. <ul>
  1993. <li>接单范围</li>
  1994. </ul>
  1995. </li>
  1996. <li>查询技师定位数据</li>
  1997. <li>查询抢单类型订单列表
  1998. <ul>
  1999. <li>订单状态为待抢单</li>
  2000. <li>订单地区编码与技师定位地区编码匹配</li>
  2001. <li>订单经纬度与技师定位经纬度在接单范围内</li>
  2002. <li>抢单池中是否存在订单编号、技师编号的记录
  2003. <ul>
  2004. <li>存在,记录抢单状态</li>
  2005. <li>不存在,记录抢单状态为 0</li>
  2006. </ul>
  2007. </li>
  2008. </ul>
  2009. </li>
  2010. <li>返回订单列表</li>
  2011. </ol>
  2012. <h5 id="抢单">抢单 </h5>
  2013. <p><strong>参数</strong>:</p>
  2014. <ul>
  2015. <li>用户编号, 订单编号</li>
  2016. <li>用户编号 通过 Auth::id() 获取</li>
  2017. <li>订单编号 通过路由获取</li>
  2018. </ul>
  2019. <p><strong>后台逻辑</strong>:</p>
  2020. <ol>
  2021. <li>参数校验
  2022. <ul>
  2023. <li>根据用户编号查询用户技师数据
  2024. <ul>
  2025. <li>技师状态为正常</li>
  2026. <li>技师认证状态为已认证</li>
  2027. </ul>
  2028. </li>
  2029. </ul>
  2030. </li>
  2031. <li>事务处理
  2032. <ul>
  2033. <li>添加抢单池数据
  2034. <ul>
  2035. <li>订单编号</li>
  2036. <li>技师编号</li>
  2037. <li>状态为抢单中</li>
  2038. </ul>
  2039. </li>
  2040. </ul>
  2041. </li>
  2042. <li>发送异步抢单通知(比如对接极光推送)</li>
  2043. </ol>
  2044. <h5 id="接单">接单 </h5>
  2045. <p><strong>参数</strong>:</p>
  2046. <ul>
  2047. <li>用户编号, 订单编号</li>
  2048. <li>用户编号 通过 Auth::id() 获取</li>
  2049. <li>订单编号 通过路由获取</li>
  2050. </ul>
  2051. <p><strong>后台逻辑</strong>:</p>
  2052. <ol>
  2053. <li>参数校验
  2054. <ul>
  2055. <li>根据用户编号查询用户技师数据
  2056. <ul>
  2057. <li>技师状态为正常</li>
  2058. <li>技师认证状态为已认证</li>
  2059. </ul>
  2060. </li>
  2061. </ul>
  2062. </li>
  2063. <li>事务处理
  2064. <ul>
  2065. <li>修改订单状态为待服务</li>
  2066. <li><a href="./%E6%A8%A1%E5%9E%8B/%E8%AE%A2%E5%8D%95%E8%AE%B0%E5%BD%95.md#%E6%8E%A5%E5%8D%95">创建订单记录:接单</a></li>
  2067. </ul>
  2068. </li>
  2069. <li>发送异步抢单通知(比如对接极光推送)</li>
  2070. </ol>
  2071. <h5 id="出发">出发 </h5>
  2072. <p><strong>参数</strong>:</p>
  2073. <ul>
  2074. <li>用户编号, 订单编号</li>
  2075. <li>用户编号 通过 Auth::id() 获取</li>
  2076. <li>订单编号 通过路由获取</li>
  2077. </ul>
  2078. <p><strong>后台逻辑</strong>:</p>
  2079. <ol>
  2080. <li>参数校验
  2081. <ul>
  2082. <li>根据用户编号查询用户技师数据</li>
  2083. <li>技师状态为正常</li>
  2084. <li>技师认证状态为已认证</li>
  2085. </ul>
  2086. </li>
  2087. <li>事务处理
  2088. <ul>
  2089. <li><a href="#%E5%9B%9B-%E8%AE%A2%E5%8D%95%E5%8E%86%E5%8F%B2">创建订单历史:出发</a></li>
  2090. </ul>
  2091. </li>
  2092. <li>发送异步抢单通知(比如对接极光推送)</li>
  2093. </ol>
  2094. <h5 id="到达">到达 </h5>
  2095. <p><strong>参数</strong>:</p>
  2096. <ul>
  2097. <li>用户编号, 订单编号</li>
  2098. <li>用户编号 通过 Auth::id() 获取</li>
  2099. <li>订单编号 通过路由获取</li>
  2100. </ul>
  2101. <p><strong>后台逻辑</strong>:</p>
  2102. <ol>
  2103. <li>参数校验
  2104. <ul>
  2105. <li>根据用户编号查询用户技师数据
  2106. <ul>
  2107. <li>技师状态为正常</li>
  2108. <li>技师认证状态为已认证</li>
  2109. </ul>
  2110. </li>
  2111. </ul>
  2112. </li>
  2113. <li>事务处理
  2114. <ul>
  2115. <li><a href="#%E5%9B%9B-%E8%AE%A2%E5%8D%95%E5%8E%86%E5%8F%B2">创建订单历史:到达</a></li>
  2116. </ul>
  2117. </li>
  2118. <li>发送异步抢单通知(比如对接极光推送)</li>
  2119. </ol>
  2120. <h5 id="撤离">撤离 </h5>
  2121. <p><strong>参数</strong>:</p>
  2122. <ul>
  2123. <li>用户编号, 订单编号</li>
  2124. <li>用户编号 通过 Auth::id() 获取</li>
  2125. <li>订单编号 通过路由获取</li>
  2126. </ul>
  2127. <p><strong>后台逻辑</strong>:</p>
  2128. <ol>
  2129. <li>参数校验
  2130. <ul>
  2131. <li>根据用户编号查询用户技师数据
  2132. <ul>
  2133. <li>技师状态为正常</li>
  2134. <li>技师认证状态为已认证</li>
  2135. </ul>
  2136. </li>
  2137. </ul>
  2138. </li>
  2139. <li>事务处理
  2140. <ul>
  2141. <li><a href="#%E5%9B%9B-%E8%AE%A2%E5%8D%95%E5%8E%86%E5%8F%B2">创建订单历史:撤离</a></li>
  2142. </ul>
  2143. </li>
  2144. <li>发送异步抢单通知(比如对接极光推送)</li>
  2145. </ol>
  2146. <h5 id="订单列表">订单列表 </h5>
  2147. <p><strong>参数</strong>:</p>
  2148. <ul>
  2149. <li>用户编号 通过 Auth::id() 获取</li>
  2150. <li>pageSize 每页大小</li>
  2151. <li>page 页码</li>
  2152. </ul>
  2153. <p><strong>后台逻辑</strong>:</p>
  2154. <ul>
  2155. <li>根据用户编号查询技师</li>
  2156. <li>根据页面大小、页码查询技师订单列表</li>
  2157. <li>返回订单分页列表</li>
  2158. </ul>
  2159. <h5 id="拒绝接单">拒绝接单 </h5>
  2160. <p><strong>参数</strong>:</p>
  2161. <ul>
  2162. <li>用户编号, 订单编号</li>
  2163. <li>用户编号 通过 Auth::id() 获取</li>
  2164. <li>订单编号 通过路由获取</li>
  2165. </ul>
  2166. <p><strong>后台逻辑</strong>:</p>
  2167. <ol>
  2168. <li>参数校验
  2169. <ul>
  2170. <li>根据用户编号查询用户技师数据
  2171. <ul>
  2172. <li>技师状态为正常</li>
  2173. <li>技师认证状态为已认证</li>
  2174. </ul>
  2175. </li>
  2176. </ul>
  2177. </li>
  2178. <li>事务处理
  2179. <ul>
  2180. <li>修改订单状态为拒单</li>
  2181. <li><a href="./%E6%A8%A1%E5%9E%8B/%E8%AE%A2%E5%8D%95%E8%AE%B0%E5%BD%95.md#%E6%8B%92%E5%8D%95">创建订单记录:拒单</a></li>
  2182. </ul>
  2183. </li>
  2184. <li>发送异步抢单通知(比如对接极光推送)</li>
  2185. </ol>
  2186. <p></p>
  2187. <h3 id="四-钱包">四、钱包 </h3>
  2188. <p></p><h4 id="提现-1">提现 </h4>
  2189. <p><strong>参数</strong>:<br>
  2190. - 角色编号, 角色, 提现金额<br>
  2191. - user_id 通过 Auth::id() 获取</p>
  2192. <p><strong>涉及表和关键列</strong>:</p>
  2193. <ul>
  2194. <li>提现记录表
  2195. <ul>
  2196. <li>字段:角色编号, 角色, 提现金额, 审核状态, 审核时间</li>
  2197. <li>角色字段
  2198. <ul>
  2199. <li>用户</li>
  2200. <li>技师</li>
  2201. </ul>
  2202. </li>
  2203. <li>审核状态字段
  2204. <ul>
  2205. <li>申请中</li>
  2206. <li>已通过</li>
  2207. <li>已驳回</li>
  2208. </ul>
  2209. </li>
  2210. </ul>
  2211. </li>
  2212. <li>钱包流水表
  2213. <ul>
  2214. <li>字段:角色, 角色编号, 交易类型, 交易金额, 钱包余额, 钱包冻结金额, 状态</li>
  2215. <li>交易类型字段
  2216. <ul>
  2217. <li>提现</li>
  2218. </ul>
  2219. </li>
  2220. </ul>
  2221. </li>
  2222. </ul>
  2223. <p><strong>后台逻辑</strong>:</p>
  2224. <ul>
  2225. <li>
  2226. <p>根据角色及角色编号,查询钱包数据</p>
  2227. </li>
  2228. <li>
  2229. <p>如果余额不足,则返回失败</p>
  2230. </li>
  2231. <li>
  2232. <p>如果余额足够,则添加事务处理</p>
  2233. <ul>
  2234. <li>
  2235. <p>检验</p>
  2236. <ul>
  2237. <li>提现金额大于0</li>
  2238. <li>提现金额小于等于钱包余额减钱包冻结金额</li>
  2239. </ul>
  2240. </li>
  2241. <li>
  2242. <p>创建提现记录</p>
  2243. <ul>
  2244. <li>角色编号:角色编号</li>
  2245. <li>角色:角色</li>
  2246. <li>提现金额:提现金额</li>
  2247. <li>审核状态:申请中</li>
  2248. </ul>
  2249. </li>
  2250. <li>
  2251. <p>更新钱包数据</p>
  2252. <ul>
  2253. <li>添加数据修改乐观锁</li>
  2254. <li>钱包冻结金额增加提现金额</li>
  2255. </ul>
  2256. </li>
  2257. </ul>
  2258. </li>
  2259. <li>
  2260. <p>发送提现通知(比如对接极光推送)</p>
  2261. </li>
  2262. </ul>
  2263. <h4 id="退款">退款 </h4>
  2264. <p><strong>参数</strong>:<br>
  2265. - 用户编号 通过 Auth::id() 获取<br>
  2266. - 订单编号 通过路由获取</p>
  2267. <p><strong>涉及表和关键列</strong>:<br>
  2268. - 订单表<br>
  2269. - 字段:编号, 用户编号, 状态<br>
  2270. - 状态<br>
  2271. - 待支付<br>
  2272. - 待服务<br>
  2273. - 待评价<br>
  2274. - 已完成<br>
  2275. - 已取消<br>
  2276. - 订单历史记录表<br>
  2277. - 字段:历史记录编号, 订单编号, 角色, 角色编号, 状态<br>
  2278. - 角色<br>
  2279. - 用户<br>
  2280. - 技师<br>
  2281. - 代理<br>
  2282. - 状态<br>
  2283. - 下单<br>
  2284. - 接单<br>
  2285. - 出发<br>
  2286. - 到达<br>
  2287. - 开始<br>
  2288. - 结束<br>
  2289. - 撤离<br>
  2290. - 取消(退款)</p>
  2291. <p><strong>后台逻辑</strong>:</p>
  2292. <ol>
  2293. <li>查询钱包明细
  2294. <ul>
  2295. <li>订单编号</li>
  2296. <li>钱包明细类型为退款</li>
  2297. <li>如果存在,则逻辑停止</li>
  2298. </ul>
  2299. </li>
  2300. <li>查询订单记录
  2301. <ul>
  2302. <li>订单编号</li>
  2303. <li>状态存在已到达或开始服务,则停止逻辑</li>
  2304. <li>状态不存在支付,则停止逻辑</li>
  2305. </ul>
  2306. </li>
  2307. <li>更新数据
  2308. <ul>
  2309. <li>
  2310. <p>开启事务</p>
  2311. </li>
  2312. <li>
  2313. <p>计算退款金额</p>
  2314. <ul>
  2315. <li>订单金额 = 订单实际支付金额 加 订单使用余额抵扣金额</li>
  2316. <li>如果记录订单状态不存在接单、出发
  2317. <ul>
  2318. <li>退款金额 = 订单金额</li>
  2319. </ul>
  2320. </li>
  2321. <li>否则,如果记录订单状态存在出发
  2322. <ul>
  2323. <li>退款金额 = (订单金额-订单车费金额) * 0.5</li>
  2324. </ul>
  2325. </li>
  2326. <li>否则,如果记录订单状态存在接单
  2327. <ul>
  2328. <li>退款金额 = (订单金额-订单车费金额) * 0.2 + 订单车费金额</li>
  2329. </ul>
  2330. </li>
  2331. </ul>
  2332. </li>
  2333. <li>
  2334. <p>钱包总额加退款金额</p>
  2335. </li>
  2336. <li>
  2337. <p>添加钱包明细表</p>
  2338. <ul>
  2339. <li>钱包编号</li>
  2340. <li>钱包明细类型为退款</li>
  2341. <li>钱包明细金额为退款金额</li>
  2342. </ul>
  2343. </li>
  2344. </ul>
  2345. </li>
  2346. </ol>
  2347. <ul>
  2348. <li>提交事务</li>
  2349. </ul>
  2350. <h4 id="分润">分润 </h4>
  2351. <h4 id="查询钱包">查询钱包 </h4>
  2352. <p><strong>参数</strong>:<br>
  2353. - 角色<br>
  2354. - 角色编号<br>
  2355. <strong>后台逻辑</strong>:<br>
  2356. - 查询钱包数据<br>
  2357. - 角色编号<br>
  2358. - 角色<br>
  2359. - 返回钱包数据</p>
  2360. <h4 id="钱包明细-1">钱包明细 </h4>
  2361. <p><strong>参数</strong>:<br>
  2362. - 钱包编号</p>
  2363. <p><strong>后台逻辑</strong>:<br>
  2364. - 查询钱包明细数据<br>
  2365. - 钱包编号<br>
  2366. - 返回钱包明细数据</p>
  2367. <p></p>
  2368. <h3 id="五-店铺">五、店铺 </h3>
  2369. <h3 id="六-租户">六、租户 </h3>
  2370. <p></p>
  2371. </div>
  2372. <div class="md-sidebar-toc">
  2373. <div class="md-toc">
  2374. <details style="padding:0;;padding-left:0px;" open="">
  2375. <summary class="md-toc-link-wrapper">
  2376. <a href="#程序详细设计" class="md-toc-link"><p>程序详细设计</p>
  2377. </a>
  2378. </summary>
  2379. <div>
  2380. <div class="md-toc-link-wrapper" style="padding:0;;display:list-item;list-style:square;margin-left:42px">
  2381. <a href="#系统架构系统架构indexhtml" class="md-toc-link">
  2382. </a><p><a href="#系统架构系统架构indexhtml" class="md-toc-link"></a><a href="./%E7%B3%BB%E7%BB%9F%E6%9E%B6%E6%9E%84/index.html">系统架构</a></p>
  2383. </div><div class="md-toc-link-wrapper" style="padding:0;;display:list-item;list-style:square;margin-left:42px">
  2384. <a href="#数据库设计数据库设计indexhtml" class="md-toc-link">
  2385. </a><p><a href="#数据库设计数据库设计indexhtml" class="md-toc-link"></a><a href="./%E6%95%B0%E6%8D%AE%E5%BA%93%E8%AE%BE%E8%AE%A1/index.html">数据库设计</a></p>
  2386. </div><details style="padding:0;;padding-left:24px;" open="">
  2387. <summary class="md-toc-link-wrapper">
  2388. <a href="#流程设计" class="md-toc-link"><p>流程设计</p>
  2389. </a>
  2390. </summary>
  2391. <div>
  2392. <details style="padding:0;;padding-left:24px;" open="">
  2393. <summary class="md-toc-link-wrapper">
  2394. <a href="#总流程" class="md-toc-link"><p>总流程</p>
  2395. </a>
  2396. </summary>
  2397. <div>
  2398. <div class="md-toc-link-wrapper" style="padding:0;;display:list-item;list-style:square;margin-left:42px">
  2399. <a href="#用户登录哈" class="md-toc-link">
  2400. <p>用户登录哈</p>
  2401. </a></div><div class="md-toc-link-wrapper" style="padding:0;;display:list-item;list-style:square;margin-left:42px">
  2402. <a href="#用户钱包哈" class="md-toc-link">
  2403. <p>用户钱包哈</p>
  2404. </a></div><div class="md-toc-link-wrapper" style="padding:0;;display:list-item;list-style:square;margin-left:42px">
  2405. <a href="#用户充值哈" class="md-toc-link">
  2406. <p>用户充值哈</p>
  2407. </a></div><div class="md-toc-link-wrapper" style="padding:0;;display:list-item;list-style:square;margin-left:42px">
  2408. <a href="#用户提现哈" class="md-toc-link">
  2409. <p>用户提现哈</p>
  2410. </a></div><div class="md-toc-link-wrapper" style="padding:0;;display:list-item;list-style:square;margin-left:42px">
  2411. <a href="#营销券" class="md-toc-link">
  2412. <p>营销券</p>
  2413. </a></div><div class="md-toc-link-wrapper" style="padding:0;;display:list-item;list-style:square;margin-left:42px">
  2414. <a href="#我的团队哈" class="md-toc-link">
  2415. <p>我的团队哈</p>
  2416. </a></div><div class="md-toc-link-wrapper" style="padding:0;;display:list-item;list-style:square;margin-left:42px">
  2417. <a href="#团队成员" class="md-toc-link">
  2418. <p>团队成员</p>
  2419. </a></div><div class="md-toc-link-wrapper" style="padding:0;;display:list-item;list-style:square;margin-left:42px">
  2420. <a href="#团队佣金" class="md-toc-link">
  2421. <p>团队佣金</p>
  2422. </a></div><div class="md-toc-link-wrapper" style="padding:0;;display:list-item;list-style:square;margin-left:42px">
  2423. <a href="#分享赚钱" class="md-toc-link">
  2424. <p>分享赚钱</p>
  2425. </a></div><div class="md-toc-link-wrapper" style="padding:0;;display:list-item;list-style:square;margin-left:42px">
  2426. <a href="#嘀咚会员" class="md-toc-link">
  2427. <p>嘀咚会员</p>
  2428. </a></div><div class="md-toc-link-wrapper" style="padding:0;;display:list-item;list-style:square;margin-left:42px">
  2429. <a href="#渠道合作" class="md-toc-link">
  2430. <p>渠道合作</p>
  2431. </a></div><div class="md-toc-link-wrapper" style="padding:0;;display:list-item;list-style:square;margin-left:42px">
  2432. <a href="#技师申请" class="md-toc-link">
  2433. <p>技师申请</p>
  2434. </a></div><div class="md-toc-link-wrapper" style="padding:0;;display:list-item;list-style:square;margin-left:42px">
  2435. <a href="#业务员申请" class="md-toc-link">
  2436. <p>业务员申请</p>
  2437. </a></div><div class="md-toc-link-wrapper" style="padding:0;;display:list-item;list-style:square;margin-left:42px">
  2438. <a href="#技师登录" class="md-toc-link">
  2439. <p>技师登录</p>
  2440. </a></div><div class="md-toc-link-wrapper" style="padding:0;;display:list-item;list-style:square;margin-left:42px">
  2441. <a href="#技师钱包" class="md-toc-link">
  2442. <p>技师钱包</p>
  2443. </a></div><div class="md-toc-link-wrapper" style="padding:0;;display:list-item;list-style:square;margin-left:42px">
  2444. <a href="#技师充值" class="md-toc-link">
  2445. <p>技师充值</p>
  2446. </a></div><div class="md-toc-link-wrapper" style="padding:0;;display:list-item;list-style:square;margin-left:42px">
  2447. <a href="#技师提现" class="md-toc-link">
  2448. <p>技师提现</p>
  2449. </a></div><div class="md-toc-link-wrapper" style="padding:0;;display:list-item;list-style:square;margin-left:42px">
  2450. <a href="#项目设置哈" class="md-toc-link">
  2451. <p>项目设置哈</p>
  2452. </a></div><div class="md-toc-link-wrapper" style="padding:0;;display:list-item;list-style:square;margin-left:42px">
  2453. <a href="#接单设置哈" class="md-toc-link">
  2454. <p>接单设置哈</p>
  2455. </a></div><div class="md-toc-link-wrapper" style="padding:0;;display:list-item;list-style:square;margin-left:42px">
  2456. <a href="#选择技师下单" class="md-toc-link">
  2457. <p>选择技师下单</p>
  2458. </a></div><div class="md-toc-link-wrapper" style="padding:0;;display:list-item;list-style:square;margin-left:42px">
  2459. <a href="#选择项目下单哈" class="md-toc-link">
  2460. <p>选择项目下单哈</p>
  2461. </a></div><div class="md-toc-link-wrapper" style="padding:0;;display:list-item;list-style:square;margin-left:42px">
  2462. <a href="#订单支付" class="md-toc-link">
  2463. <p>订单支付</p>
  2464. </a></div><div class="md-toc-link-wrapper" style="padding:0;;display:list-item;list-style:square;margin-left:42px">
  2465. <a href="#线下服务" class="md-toc-link">
  2466. <p>线下服务</p>
  2467. </a></div><div class="md-toc-link-wrapper" style="padding:0;;display:list-item;list-style:square;margin-left:42px">
  2468. <a href="#分账结算" class="md-toc-link">
  2469. <p>分账结算</p>
  2470. </a></div><div class="md-toc-link-wrapper" style="padding:0;;display:list-item;list-style:square;margin-left:42px">
  2471. <a href="#合同解约" class="md-toc-link">
  2472. <p>合同解约</p>
  2473. </a></div><div class="md-toc-link-wrapper" style="padding:0;;display:list-item;list-style:square;margin-left:42px">
  2474. <a href="#异地签到" class="md-toc-link">
  2475. <p>异地签到</p>
  2476. </a></div><div class="md-toc-link-wrapper" style="padding:0;;display:list-item;list-style:square;margin-left:42px">
  2477. <a href="#技师注销账号" class="md-toc-link">
  2478. <p>技师注销账号</p>
  2479. </a></div><div class="md-toc-link-wrapper" style="padding:0;;display:list-item;list-style:square;margin-left:42px">
  2480. <a href="#用户注销账号" class="md-toc-link">
  2481. <p>用户注销账号</p>
  2482. </a></div>
  2483. </div>
  2484. </details>
  2485. <details style="padding:0;;padding-left:24px;" open="">
  2486. <summary class="md-toc-link-wrapper">
  2487. <a href="#技师注册流程" class="md-toc-link"><p>技师注册流程</p>
  2488. </a>
  2489. </summary>
  2490. <div>
  2491. <div class="md-toc-link-wrapper" style="padding:0;;display:list-item;list-style:square;margin-left:42px">
  2492. <a href="#技师申请-1" class="md-toc-link">
  2493. <p>技师申请</p>
  2494. </a></div><div class="md-toc-link-wrapper" style="padding:0;;display:list-item;list-style:square;margin-left:42px">
  2495. <a href="#技师端" class="md-toc-link">
  2496. <p>技师端</p>
  2497. </a></div><div class="md-toc-link-wrapper" style="padding:0;;display:list-item;list-style:square;margin-left:42px">
  2498. <a href="#技师认证" class="md-toc-link">
  2499. <p>技师认证</p>
  2500. </a></div><div class="md-toc-link-wrapper" style="padding:0;;display:list-item;list-style:square;margin-left:42px">
  2501. <a href="#技师认证审核" class="md-toc-link">
  2502. <p>技师认证审核</p>
  2503. </a></div><div class="md-toc-link-wrapper" style="padding:0;;display:list-item;list-style:square;margin-left:42px">
  2504. <a href="#签合同" class="md-toc-link">
  2505. <p>签合同</p>
  2506. </a></div>
  2507. </div>
  2508. </details>
  2509. <details style="padding:0;;padding-left:24px;" open="">
  2510. <summary class="md-toc-link-wrapper">
  2511. <a href="#下单流程" class="md-toc-link"><p>下单流程</p>
  2512. </a>
  2513. </summary>
  2514. <div>
  2515. <details style="padding:0;;padding-left:24px;" open="">
  2516. <summary class="md-toc-link-wrapper">
  2517. <a href="#选择技师下单流程" class="md-toc-link"><p>选择技师下单流程</p>
  2518. </a>
  2519. </summary>
  2520. <div>
  2521. <div class="md-toc-link-wrapper" style="padding:0;;display:list-item;list-style:square;margin-left:42px">
  2522. <a href="#用户选择技师" class="md-toc-link">
  2523. <p>用户选择技师</p>
  2524. </a></div><div class="md-toc-link-wrapper" style="padding:0;;display:list-item;list-style:square;margin-left:42px">
  2525. <a href="#用户选择项目" class="md-toc-link">
  2526. <p>用户选择项目</p>
  2527. </a></div><div class="md-toc-link-wrapper" style="padding:0;;display:list-item;list-style:square;margin-left:42px">
  2528. <a href="#用户选择可服务时间" class="md-toc-link">
  2529. <p>用户选择可服务时间</p>
  2530. </a></div><div class="md-toc-link-wrapper" style="padding:0;;display:list-item;list-style:square;margin-left:42px">
  2531. <a href="#用户选择营销卷" class="md-toc-link">
  2532. <p>用户选择营销卷</p>
  2533. </a></div><div class="md-toc-link-wrapper" style="padding:0;;display:list-item;list-style:square;margin-left:42px">
  2534. <a href="#用户点击立即结算" class="md-toc-link">
  2535. <p>用户点击立即结算</p>
  2536. </a></div><div class="md-toc-link-wrapper" style="padding:0;;display:list-item;list-style:square;margin-left:42px">
  2537. <a href="#支付失败" class="md-toc-link">
  2538. <p>支付失败</p>
  2539. </a></div><div class="md-toc-link-wrapper" style="padding:0;;display:list-item;list-style:square;margin-left:42px">
  2540. <a href="#支付成功" class="md-toc-link">
  2541. <p>支付成功</p>
  2542. </a></div><div class="md-toc-link-wrapper" style="padding:0;;display:list-item;list-style:square;margin-left:42px">
  2543. <a href="#技师接单" class="md-toc-link">
  2544. <p>技师接单</p>
  2545. </a></div><div class="md-toc-link-wrapper" style="padding:0;;display:list-item;list-style:square;margin-left:42px">
  2546. <a href="#技师拒绝接单" class="md-toc-link">
  2547. <p>技师拒绝接单</p>
  2548. </a></div><div class="md-toc-link-wrapper" style="padding:0;;display:list-item;list-style:square;margin-left:42px">
  2549. <a href="#订单超时" class="md-toc-link">
  2550. <p>订单超时</p>
  2551. </a></div>
  2552. </div>
  2553. </details>
  2554. <details style="padding:0;;padding-left:24px;" open="">
  2555. <summary class="md-toc-link-wrapper">
  2556. <a href="#选择项目下单" class="md-toc-link"><p>选择项目下单</p>
  2557. </a>
  2558. </summary>
  2559. <div>
  2560. <div class="md-toc-link-wrapper" style="padding:0;;display:list-item;list-style:square;margin-left:42px">
  2561. <a href="#用户选择项目-1" class="md-toc-link">
  2562. <p>用户选择项目</p>
  2563. </a></div><div class="md-toc-link-wrapper" style="padding:0;;display:list-item;list-style:square;margin-left:42px">
  2564. <a href="#创建抢单类型订单推送给技师" class="md-toc-link">
  2565. <p>创建抢单类型订单,推送给技师</p>
  2566. </a></div><div class="md-toc-link-wrapper" style="padding:0;;display:list-item;list-style:square;margin-left:42px">
  2567. <a href="#有技师抢单" class="md-toc-link">
  2568. <p>有技师抢单</p>
  2569. </a></div><div class="md-toc-link-wrapper" style="padding:0;;display:list-item;list-style:square;margin-left:42px">
  2570. <a href="#无技师抢单" class="md-toc-link">
  2571. <p>无技师抢单</p>
  2572. </a></div><div class="md-toc-link-wrapper" style="padding:0;;display:list-item;list-style:square;margin-left:42px">
  2573. <a href="#用户选择技师-1" class="md-toc-link">
  2574. <p>用户选择技师</p>
  2575. </a></div><div class="md-toc-link-wrapper" style="padding:0;;display:list-item;list-style:square;margin-left:42px">
  2576. <a href="#用户不反选技师" class="md-toc-link">
  2577. <p>用户不反选技师</p>
  2578. </a></div><div class="md-toc-link-wrapper" style="padding:0;;display:list-item;list-style:square;margin-left:42px">
  2579. <a href="#支付成功-1" class="md-toc-link">
  2580. <p>支付成功</p>
  2581. </a></div><div class="md-toc-link-wrapper" style="padding:0;;display:list-item;list-style:square;margin-left:42px">
  2582. <a href="#技师拒绝接单-1" class="md-toc-link">
  2583. <p>技师拒绝接单</p>
  2584. </a></div><div class="md-toc-link-wrapper" style="padding:0;;display:list-item;list-style:square;margin-left:42px">
  2585. <a href="#支付失败-1" class="md-toc-link">
  2586. <p>支付失败</p>
  2587. </a></div><div class="md-toc-link-wrapper" style="padding:0;;display:list-item;list-style:square;margin-left:42px">
  2588. <a href="#技师出发" class="md-toc-link">
  2589. <p>技师出发</p>
  2590. </a></div>
  2591. </div>
  2592. </details>
  2593. </div>
  2594. </details>
  2595. <details style="padding:0;;padding-left:24px;" open="">
  2596. <summary class="md-toc-link-wrapper">
  2597. <a href="#服务流程" class="md-toc-link"><p>服务流程</p>
  2598. </a>
  2599. </summary>
  2600. <div>
  2601. <div class="md-toc-link-wrapper" style="padding:0;;display:list-item;list-style:square;margin-left:42px">
  2602. <a href="#技师出发-1" class="md-toc-link">
  2603. <p>技师出发</p>
  2604. </a></div><div class="md-toc-link-wrapper" style="padding:0;;display:list-item;list-style:square;margin-left:42px">
  2605. <a href="#技师出发中用户取消订单用户取消订单" class="md-toc-link">
  2606. </a><p><a href="#技师出发中用户取消订单用户取消订单" class="md-toc-link">技师出发中,用户</a><a href="#%E7%94%A8%E6%88%B7%E5%8F%96%E6%B6%88%E8%AE%A2%E5%8D%95">取消订单</a></p>
  2607. </div><div class="md-toc-link-wrapper" style="padding:0;;display:list-item;list-style:square;margin-left:42px">
  2608. <a href="#技师出发中技师终止订单" class="md-toc-link">
  2609. <p>技师出发中,技师终止订单</p>
  2610. </a></div><div class="md-toc-link-wrapper" style="padding:0;;display:list-item;list-style:square;margin-left:42px">
  2611. <a href="#技师到达前用户线下取消订单" class="md-toc-link">
  2612. <p>技师到达前,用户线下取消订单</p>
  2613. </a></div><div class="md-toc-link-wrapper" style="padding:0;;display:list-item;list-style:square;margin-left:42px">
  2614. <a href="#技师到达联系不上用户" class="md-toc-link">
  2615. <p>技师到达,联系不上用户</p>
  2616. </a></div><div class="md-toc-link-wrapper" style="padding:0;;display:list-item;list-style:square;margin-left:42px">
  2617. <a href="#开始服务" class="md-toc-link">
  2618. <p>开始服务</p>
  2619. </a></div><div class="md-toc-link-wrapper" style="padding:0;;display:list-item;list-style:square;margin-left:42px">
  2620. <a href="#服务进行中用户结束订单" class="md-toc-link">
  2621. <p>服务进行中,用户结束订单</p>
  2622. </a></div><div class="md-toc-link-wrapper" style="padding:0;;display:list-item;list-style:square;margin-left:42px">
  2623. <a href="#服务进行中用户打赏" class="md-toc-link">
  2624. <p>服务进行中,用户打赏</p>
  2625. </a></div><div class="md-toc-link-wrapper" style="padding:0;;display:list-item;list-style:square;margin-left:42px">
  2626. <a href="#服务进行中用户加钟" class="md-toc-link">
  2627. <p>服务进行中,用户加钟</p>
  2628. </a></div><div class="md-toc-link-wrapper" style="padding:0;;display:list-item;list-style:square;margin-left:42px">
  2629. <a href="#服务结束" class="md-toc-link">
  2630. <p>服务结束</p>
  2631. </a></div><div class="md-toc-link-wrapper" style="padding:0;;display:list-item;list-style:square;margin-left:42px">
  2632. <a href="#用户确认技师离开" class="md-toc-link">
  2633. <p>用户确认技师离开</p>
  2634. </a></div><div class="md-toc-link-wrapper" style="padding:0;;display:list-item;list-style:square;margin-left:42px">
  2635. <a href="#技师撤离" class="md-toc-link">
  2636. <p>技师撤离</p>
  2637. </a></div><div class="md-toc-link-wrapper" style="padding:0;;display:list-item;list-style:square;margin-left:42px">
  2638. <a href="#订单结算" class="md-toc-link">
  2639. <p>订单结算</p>
  2640. </a></div>
  2641. </div>
  2642. </details>
  2643. <div class="md-toc-link-wrapper" style="padding:0;;display:list-item;list-style:square;margin-left:42px">
  2644. <a href="#推广用户" class="md-toc-link">
  2645. <p>推广用户</p>
  2646. </a></div><div class="md-toc-link-wrapper" style="padding:0;;display:list-item;list-style:square;margin-left:42px">
  2647. <a href="#推荐技师" class="md-toc-link">
  2648. <p>推荐技师</p>
  2649. </a></div><details style="padding:0;;padding-left:24px;" open="">
  2650. <summary class="md-toc-link-wrapper">
  2651. <a href="#分账" class="md-toc-link"><p>分账</p>
  2652. </a>
  2653. </summary>
  2654. <div>
  2655. <div class="md-toc-link-wrapper" style="padding:0;;display:list-item;list-style:square;margin-left:42px">
  2656. <a href="#分账简介版" class="md-toc-link">
  2657. <p>分账简介版</p>
  2658. </a></div><div class="md-toc-link-wrapper" style="padding:0;;display:list-item;list-style:square;margin-left:42px">
  2659. <a href="#分账流程设计" class="md-toc-link">
  2660. <p>分账流程设计</p>
  2661. </a></div>
  2662. </div>
  2663. </details>
  2664. <div class="md-toc-link-wrapper" style="padding:0;;display:list-item;list-style:square;margin-left:42px">
  2665. <a href="#营销" class="md-toc-link">
  2666. <p>营销</p>
  2667. </a></div>
  2668. </div>
  2669. </details>
  2670. <details style="padding:0;;padding-left:24px;" open="">
  2671. <summary class="md-toc-link-wrapper">
  2672. <a href="#业务模块" class="md-toc-link"><p>业务模块</p>
  2673. </a>
  2674. </summary>
  2675. <div>
  2676. <details style="padding:0;;padding-left:24px;" open="">
  2677. <summary class="md-toc-link-wrapper">
  2678. <a href="#一-用户" class="md-toc-link"><p>一、用户</p>
  2679. </a>
  2680. </summary>
  2681. <div>
  2682. <div class="md-toc-link-wrapper" style="padding:0;;display:list-item;list-style:square;margin-left:42px">
  2683. <a href="#发送验证码" class="md-toc-link">
  2684. <p>发送验证码</p>
  2685. </a></div><div class="md-toc-link-wrapper" style="padding:0;;display:list-item;list-style:square;margin-left:42px">
  2686. <a href="#用户登录" class="md-toc-link">
  2687. <p>用户登录</p>
  2688. </a></div><div class="md-toc-link-wrapper" style="padding:0;;display:list-item;list-style:square;margin-left:42px">
  2689. <a href="#获取微信授权" class="md-toc-link">
  2690. <p>获取微信授权</p>
  2691. </a></div><div class="md-toc-link-wrapper" style="padding:0;;display:list-item;list-style:square;margin-left:42px">
  2692. <a href="#微信登录" class="md-toc-link">
  2693. <p>微信登录</p>
  2694. </a></div><div class="md-toc-link-wrapper" style="padding:0;;display:list-item;list-style:square;margin-left:42px">
  2695. <a href="#用户退出" class="md-toc-link">
  2696. <p>用户退出</p>
  2697. </a></div><div class="md-toc-link-wrapper" style="padding:0;;display:list-item;list-style:square;margin-left:42px">
  2698. <a href="#获取用户信息" class="md-toc-link">
  2699. <p>获取用户信息</p>
  2700. </a></div><div class="md-toc-link-wrapper" style="padding:0;;display:list-item;list-style:square;margin-left:42px">
  2701. <a href="#修改用户信息" class="md-toc-link">
  2702. <p>修改用户信息</p>
  2703. </a></div><div class="md-toc-link-wrapper" style="padding:0;;display:list-item;list-style:square;margin-left:42px">
  2704. <a href="#用户钱包" class="md-toc-link">
  2705. <p>用户钱包</p>
  2706. </a></div><div class="md-toc-link-wrapper" style="padding:0;;display:list-item;list-style:square;margin-left:42px">
  2707. <a href="#用户提现" class="md-toc-link">
  2708. <p>用户提现</p>
  2709. </a></div><div class="md-toc-link-wrapper" style="padding:0;;display:list-item;list-style:square;margin-left:42px">
  2710. <a href="#用户注销" class="md-toc-link">
  2711. <p>用户注销</p>
  2712. </a></div><div class="md-toc-link-wrapper" style="padding:0;;display:list-item;list-style:square;margin-left:42px">
  2713. <a href="#用户反馈" class="md-toc-link">
  2714. <p>用户反馈</p>
  2715. </a></div><div class="md-toc-link-wrapper" style="padding:0;;display:list-item;list-style:square;margin-left:42px">
  2716. <a href="#用户评价" class="md-toc-link">
  2717. <p>用户评价</p>
  2718. </a></div><div class="md-toc-link-wrapper" style="padding:0;;display:list-item;list-style:square;margin-left:42px">
  2719. <a href="#用户评价列表" class="md-toc-link">
  2720. <p>用户评价列表</p>
  2721. </a></div><div class="md-toc-link-wrapper" style="padding:0;;display:list-item;list-style:square;margin-left:42px">
  2722. <a href="#申请技师" class="md-toc-link">
  2723. <p>申请技师</p>
  2724. </a></div><div class="md-toc-link-wrapper" style="padding:0;;display:list-item;list-style:square;margin-left:42px">
  2725. <a href="#我的团队" class="md-toc-link">
  2726. <p>我的团队</p>
  2727. </a></div><div class="md-toc-link-wrapper" style="padding:0;;display:list-item;list-style:square;margin-left:42px">
  2728. <a href="#钱包明细" class="md-toc-link">
  2729. <p>钱包明细</p>
  2730. </a></div><div class="md-toc-link-wrapper" style="padding:0;;display:list-item;list-style:square;margin-left:42px">
  2731. <a href="#获取技师列表" class="md-toc-link">
  2732. <p>获取技师列表</p>
  2733. </a></div><div class="md-toc-link-wrapper" style="padding:0;;display:list-item;list-style:square;margin-left:42px">
  2734. <a href="#获取技师详情" class="md-toc-link">
  2735. <p>获取技师详情</p>
  2736. </a></div><div class="md-toc-link-wrapper" style="padding:0;;display:list-item;list-style:square;margin-left:42px">
  2737. <a href="#获取项目列表-技师开通租户项目" class="md-toc-link">
  2738. <p>获取项目列表-技师开通租户项目</p>
  2739. </a></div><div class="md-toc-link-wrapper" style="padding:0;;display:list-item;list-style:square;margin-left:42px">
  2740. <a href="#获取项目详情-租户项目" class="md-toc-link">
  2741. <p>获取项目详情-租户项目</p>
  2742. </a></div>
  2743. </div>
  2744. </details>
  2745. <details style="padding:0;;padding-left:24px;" open="">
  2746. <summary class="md-toc-link-wrapper">
  2747. <a href="#二-技师" class="md-toc-link"><p>二、技师</p>
  2748. </a>
  2749. </summary>
  2750. <div>
  2751. <div class="md-toc-link-wrapper" style="padding:0;;display:list-item;list-style:square;margin-left:42px">
  2752. <a href="#获取基本信息" class="md-toc-link">
  2753. <p>获取基本信息</p>
  2754. </a></div><div class="md-toc-link-wrapper" style="padding:0;;display:list-item;list-style:square;margin-left:42px">
  2755. <a href="#设置基本信息" class="md-toc-link">
  2756. <p>设置基本信息</p>
  2757. </a></div><div class="md-toc-link-wrapper" style="padding:0;;display:list-item;list-style:square;margin-left:42px">
  2758. <a href="#获取认证信息" class="md-toc-link">
  2759. <p>获取认证信息</p>
  2760. </a></div><div class="md-toc-link-wrapper" style="padding:0;;display:list-item;list-style:square;margin-left:42px">
  2761. <a href="#设置认证信息" class="md-toc-link">
  2762. <p>设置认证信息</p>
  2763. </a></div><div class="md-toc-link-wrapper" style="padding:0;;display:list-item;list-style:square;margin-left:42px">
  2764. <a href="#获取项目" class="md-toc-link">
  2765. <p>获取项目</p>
  2766. </a></div><div class="md-toc-link-wrapper" style="padding:0;;display:list-item;list-style:square;margin-left:42px">
  2767. <a href="#设置项目" class="md-toc-link">
  2768. <p>设置项目</p>
  2769. </a></div><div class="md-toc-link-wrapper" style="padding:0;;display:list-item;list-style:square;margin-left:42px">
  2770. <a href="#获取钱包" class="md-toc-link">
  2771. <p>获取钱包</p>
  2772. </a></div><div class="md-toc-link-wrapper" style="padding:0;;display:list-item;list-style:square;margin-left:42px">
  2773. <a href="#获取钱包明细" class="md-toc-link">
  2774. <p>获取钱包明细</p>
  2775. </a></div><div class="md-toc-link-wrapper" style="padding:0;;display:list-item;list-style:square;margin-left:42px">
  2776. <a href="#提现" class="md-toc-link">
  2777. <p>提现</p>
  2778. </a></div><div class="md-toc-link-wrapper" style="padding:0;;display:list-item;list-style:square;margin-left:42px">
  2779. <a href="#获取工时设置" class="md-toc-link">
  2780. <p>获取工时设置</p>
  2781. </a></div><div class="md-toc-link-wrapper" style="padding:0;;display:list-item;list-style:square;margin-left:42px">
  2782. <a href="#设置工时" class="md-toc-link">
  2783. <p>设置工时</p>
  2784. </a></div>
  2785. </div>
  2786. </details>
  2787. <details style="padding:0;;padding-left:24px;" open="">
  2788. <summary class="md-toc-link-wrapper">
  2789. <a href="#三-订单" class="md-toc-link"><p>三、订单</p>
  2790. </a>
  2791. </summary>
  2792. <div>
  2793. <details style="padding:0;;padding-left:24px;" open="">
  2794. <summary class="md-toc-link-wrapper">
  2795. <a href="#公共接口" class="md-toc-link"><p>公共接口</p>
  2796. </a>
  2797. </summary>
  2798. <div>
  2799. <div class="md-toc-link-wrapper" style="padding:0;;display:list-item;list-style:square;margin-left:42px">
  2800. <a href="#获取租户配置" class="md-toc-link">
  2801. <p>获取租户配置</p>
  2802. </a></div><div class="md-toc-link-wrapper" style="padding:0;;display:list-item;list-style:square;margin-left:42px">
  2803. <a href="#获取技师配置" class="md-toc-link">
  2804. <p>获取技师配置</p>
  2805. </a></div><div class="md-toc-link-wrapper" style="padding:0;;display:list-item;list-style:square;margin-left:42px">
  2806. <a href="#计算路费金额" class="md-toc-link">
  2807. <p>计算路费金额</p>
  2808. </a></div>
  2809. </div>
  2810. </details>
  2811. <details style="padding:0;;padding-left:24px;" open="">
  2812. <summary class="md-toc-link-wrapper">
  2813. <a href="#后台接口" class="md-toc-link"><p>后台接口</p>
  2814. </a>
  2815. </summary>
  2816. <div>
  2817. <div class="md-toc-link-wrapper" style="padding:0;;display:list-item;list-style:square;margin-left:42px">
  2818. <a href="#支付订单回调" class="md-toc-link">
  2819. <p>支付订单回调</p>
  2820. </a></div><div class="md-toc-link-wrapper" style="padding:0;;display:list-item;list-style:square;margin-left:42px">
  2821. <a href="#开始服务-1" class="md-toc-link">
  2822. <p>开始服务</p>
  2823. </a></div>
  2824. </div>
  2825. </details>
  2826. <details style="padding:0;;padding-left:24px;" open="">
  2827. <summary class="md-toc-link-wrapper">
  2828. <a href="#用户端接口" class="md-toc-link"><p>用户端接口</p>
  2829. </a>
  2830. </summary>
  2831. <div>
  2832. <div class="md-toc-link-wrapper" style="padding:0;;display:list-item;list-style:square;margin-left:42px">
  2833. <a href="#获取租户" class="md-toc-link">
  2834. <p>获取租户</p>
  2835. </a></div><div class="md-toc-link-wrapper" style="padding:0;;display:list-item;list-style:square;margin-left:42px">
  2836. <a href="#获取项目列表-租户项目" class="md-toc-link">
  2837. <p>获取项目列表-租户项目</p>
  2838. </a></div><div class="md-toc-link-wrapper" style="padding:0;;display:list-item;list-style:square;margin-left:42px">
  2839. <a href="#获取项目详情-租户项目-1" class="md-toc-link">
  2840. <p>获取项目详情-租户项目</p>
  2841. </a></div><div class="md-toc-link-wrapper" style="padding:0;;display:list-item;list-style:square;margin-left:42px">
  2842. <a href="#计算订单金额" class="md-toc-link">
  2843. <p>计算订单金额</p>
  2844. </a></div><div class="md-toc-link-wrapper" style="padding:0;;display:list-item;list-style:square;margin-left:42px">
  2845. <a href="#创建订单" class="md-toc-link">
  2846. <p>创建订单</p>
  2847. </a></div><div class="md-toc-link-wrapper" style="padding:0;;display:list-item;list-style:square;margin-left:42px">
  2848. <a href="#获取项目列表-加钟" class="md-toc-link">
  2849. <p>获取项目列表-加钟</p>
  2850. </a></div><div class="md-toc-link-wrapper" style="padding:0;;display:list-item;list-style:square;margin-left:42px">
  2851. <a href="#加钟" class="md-toc-link">
  2852. <p>加钟</p>
  2853. </a></div><div class="md-toc-link-wrapper" style="padding:0;;display:list-item;list-style:square;margin-left:42px">
  2854. <a href="#修改订单" class="md-toc-link">
  2855. <p>修改订单</p>
  2856. </a></div><div class="md-toc-link-wrapper" style="padding:0;;display:list-item;list-style:square;margin-left:42px">
  2857. <a href="#指定技师修改订单" class="md-toc-link">
  2858. <p>指定技师(修改订单)</p>
  2859. </a></div><div class="md-toc-link-wrapper" style="padding:0;;display:list-item;list-style:square;margin-left:42px">
  2860. <a href="#获取支付配置" class="md-toc-link">
  2861. <p>获取支付配置</p>
  2862. </a></div><div class="md-toc-link-wrapper" style="padding:0;;display:list-item;list-style:square;margin-left:42px">
  2863. <a href="#获取订单列表" class="md-toc-link">
  2864. <p>获取订单列表</p>
  2865. </a></div><div class="md-toc-link-wrapper" style="padding:0;;display:list-item;list-style:square;margin-left:42px">
  2866. <a href="#获取订单详情" class="md-toc-link">
  2867. <p>获取订单详情</p>
  2868. </a></div><div class="md-toc-link-wrapper" style="padding:0;;display:list-item;list-style:square;margin-left:42px">
  2869. <a href="#订单退款" class="md-toc-link">
  2870. <p>订单退款</p>
  2871. </a></div><div class="md-toc-link-wrapper" style="padding:0;;display:list-item;list-style:square;margin-left:42px">
  2872. <a href="#订单初始化-前端初始化" class="md-toc-link">
  2873. <p>订单初始化-前端初始化</p>
  2874. </a></div><div class="md-toc-link-wrapper" style="padding:0;;display:list-item;list-style:square;margin-left:42px">
  2875. <a href="#结束订单" class="md-toc-link">
  2876. <p>结束订单</p>
  2877. </a></div><div class="md-toc-link-wrapper" style="padding:0;;display:list-item;list-style:square;margin-left:42px">
  2878. <a href="#确认技师离开" class="md-toc-link">
  2879. <p>确认技师离开</p>
  2880. </a></div><div class="md-toc-link-wrapper" style="padding:0;;display:list-item;list-style:square;margin-left:42px">
  2881. <a href="#用户取消订单" class="md-toc-link">
  2882. <p>用户取消订单</p>
  2883. </a></div>
  2884. </div>
  2885. </details>
  2886. <details style="padding:0;;padding-left:24px;" open="">
  2887. <summary class="md-toc-link-wrapper">
  2888. <a href="#技师端接口" class="md-toc-link"><p>技师端接口</p>
  2889. </a>
  2890. </summary>
  2891. <div>
  2892. <div class="md-toc-link-wrapper" style="padding:0;;display:list-item;list-style:square;margin-left:42px">
  2893. <a href="#获取订单列表抢单" class="md-toc-link">
  2894. <p>获取订单列表(抢单)</p>
  2895. </a></div><div class="md-toc-link-wrapper" style="padding:0;;display:list-item;list-style:square;margin-left:42px">
  2896. <a href="#抢单" class="md-toc-link">
  2897. <p>抢单</p>
  2898. </a></div><div class="md-toc-link-wrapper" style="padding:0;;display:list-item;list-style:square;margin-left:42px">
  2899. <a href="#接单" class="md-toc-link">
  2900. <p>接单</p>
  2901. </a></div><div class="md-toc-link-wrapper" style="padding:0;;display:list-item;list-style:square;margin-left:42px">
  2902. <a href="#出发" class="md-toc-link">
  2903. <p>出发</p>
  2904. </a></div><div class="md-toc-link-wrapper" style="padding:0;;display:list-item;list-style:square;margin-left:42px">
  2905. <a href="#到达" class="md-toc-link">
  2906. <p>到达</p>
  2907. </a></div><div class="md-toc-link-wrapper" style="padding:0;;display:list-item;list-style:square;margin-left:42px">
  2908. <a href="#撤离" class="md-toc-link">
  2909. <p>撤离</p>
  2910. </a></div><div class="md-toc-link-wrapper" style="padding:0;;display:list-item;list-style:square;margin-left:42px">
  2911. <a href="#订单列表" class="md-toc-link">
  2912. <p>订单列表</p>
  2913. </a></div><div class="md-toc-link-wrapper" style="padding:0;;display:list-item;list-style:square;margin-left:42px">
  2914. <a href="#拒绝接单" class="md-toc-link">
  2915. <p>拒绝接单</p>
  2916. </a></div>
  2917. </div>
  2918. </details>
  2919. </div>
  2920. </details>
  2921. <details style="padding:0;;padding-left:24px;" open="">
  2922. <summary class="md-toc-link-wrapper">
  2923. <a href="#四-钱包" class="md-toc-link"><p>四、钱包</p>
  2924. </a>
  2925. </summary>
  2926. <div>
  2927. <div class="md-toc-link-wrapper" style="padding:0;;display:list-item;list-style:square;margin-left:42px">
  2928. <a href="#提现-1" class="md-toc-link">
  2929. <p>提现</p>
  2930. </a></div><div class="md-toc-link-wrapper" style="padding:0;;display:list-item;list-style:square;margin-left:42px">
  2931. <a href="#退款" class="md-toc-link">
  2932. <p>退款</p>
  2933. </a></div><div class="md-toc-link-wrapper" style="padding:0;;display:list-item;list-style:square;margin-left:42px">
  2934. <a href="#分润" class="md-toc-link">
  2935. <p>分润</p>
  2936. </a></div><div class="md-toc-link-wrapper" style="padding:0;;display:list-item;list-style:square;margin-left:42px">
  2937. <a href="#查询钱包" class="md-toc-link">
  2938. <p>查询钱包</p>
  2939. </a></div><div class="md-toc-link-wrapper" style="padding:0;;display:list-item;list-style:square;margin-left:42px">
  2940. <a href="#钱包明细-1" class="md-toc-link">
  2941. <p>钱包明细</p>
  2942. </a></div>
  2943. </div>
  2944. </details>
  2945. <div class="md-toc-link-wrapper" style="padding:0;;display:list-item;list-style:square;margin-left:42px">
  2946. <a href="#五-店铺" class="md-toc-link">
  2947. <p>五、店铺</p>
  2948. </a></div><div class="md-toc-link-wrapper" style="padding:0;;display:list-item;list-style:square;margin-left:42px">
  2949. <a href="#六-租户" class="md-toc-link">
  2950. <p>六、租户</p>
  2951. </a></div>
  2952. </div>
  2953. </details>
  2954. </div>
  2955. </details>
  2956. </div>
  2957. </div>
  2958. <a id="sidebar-toc-btn">≡</a>
  2959. <script type="module">
  2960. // TODO: If ZenUML gets integrated into mermaid in the future,
  2961. // we can remove the following lines.
  2962. var MERMAID_CONFIG = ({"startOnLoad":true,"securityLevel":"loose"});
  2963. if (typeof MERMAID_CONFIG !== 'undefined') {
  2964. MERMAID_CONFIG.startOnLoad = false
  2965. MERMAID_CONFIG.cloneCssStyles = false
  2966. MERMAID_CONFIG.theme = "default"
  2967. }
  2968. mermaid.initialize(MERMAID_CONFIG || {})
  2969. if (typeof(window['Reveal']) !== 'undefined') {
  2970. function mermaidRevealHelper(event) {
  2971. var currentSlide = event.currentSlide
  2972. var diagrams = currentSlide.querySelectorAll('.mermaid')
  2973. for (var i = 0; i < diagrams.length; i++) {
  2974. var diagram = diagrams[i]
  2975. if (!diagram.hasAttribute('data-processed')) {
  2976. mermaid.init(null, diagram, ()=> {
  2977. Reveal.slide(event.indexh, event.indexv)
  2978. })
  2979. }
  2980. }
  2981. }
  2982. Reveal.addEventListener('slidetransitionend', mermaidRevealHelper)
  2983. Reveal.addEventListener('ready', mermaidRevealHelper)
  2984. await mermaid.run({
  2985. nodes: document.querySelectorAll('.mermaid')
  2986. })
  2987. } else {
  2988. await mermaid.run({
  2989. nodes: document.querySelectorAll('.mermaid')
  2990. })
  2991. }
  2992. </script>
  2993. <script>
  2994. document.body.setAttribute('html-show-sidebar-toc', true)
  2995. var sidebarTOCBtn = document.getElementById('sidebar-toc-btn')
  2996. sidebarTOCBtn.addEventListener('click', function(event) {
  2997. event.stopPropagation()
  2998. if (document.body.hasAttribute('html-show-sidebar-toc')) {
  2999. document.body.removeAttribute('html-show-sidebar-toc')
  3000. } else {
  3001. document.body.setAttribute('html-show-sidebar-toc', true)
  3002. }
  3003. })
  3004. </script>
  3005. </body></html>