[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"site-config":3,"approved-friend-links":32,"project-slug-homestay-booking":33},{"code":4,"msg":5,"data":6},0,"操作成功",{"police_number":7,"login_password_enabled":8,"copyright":9,"wechat_pay_api_key":7,"admin_login_wechat_enabled":8,"wechat_pay_public_key_id":10,"member_price":11,"police_link":7,"payment_enabled":12,"contact_email":13,"wechat_pay_serial_no":14,"member_discount":15,"wechat_pay_mch_id":16,"alipay_return_url":7,"alipay_private_key":17,"admin_login_password_enabled":8,"wechat_id":18,"wechat_pay_app_id":19,"owner_name":20,"site_domain":21,"site_desc":22,"login_wechat_qr_enabled":8,"alipay_public_key":23,"wechat_pay_private_key":24,"site_name":25,"icp_number":26,"alipay_notify_url":7,"wechat_pay_public_key":27,"payment_alipay_enabled":8,"icp_link":28,"wechat_pay_api_v3_key":29,"login_email_enabled":12,"alipay_app_id":30,"member_enabled":12,"wechat_pay_notify_url":31,"admin_login_email_enabled":12},"","false","© 2026 makexu.com 版权所有","PUB_KEY_ID_0117465997412026060900182334001401","168","true","370663537@qq.com","38039BC91B0D03B6C7DDDBAEAB823D1201FDA789","0.70","1746599741","MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCJKx4pNlM6dJN10cqHxscvHhyBOu7KY6+23rmnIs1GtIvd8bu09I1mCyzWUDM26VxLz2l55I44gmK+\u002FnIhxqzsl0znvbZh5r3fj8CYbQRcDM7L9I7hOr9k5vWc\u002FAQy2jb9AmNuV3xa8F1bVkve00nN2U6Oap2aoNdDhSsSA1NeC0WwtVLaq2wkqqKBY\u002FUrfNLR3xr0iP0YRQy+paY6jta4Tz88KHE+x3ZRfxben+tejAsYVpjVTpcfDKzzKSTqDcY1vbPjApCsN66kKmEwD4HmPRNphksLiIOqyWc+zaJE39JM620Br6NuxvMiR0dmbncE3UaztvvXUSL0kDKnYKKhAgMBAAECggEAfO9U7VyZuehsVyfaPIkE6xmWBO7UiGr7pKiAmIbOSdQwgNqoiU0lbQhIsnsh6qXqdvJXs7pE\u002F5tirWu8MJ9w6Z11Yq4c7FbqIjIgzbSd\u002F+l6gbIiYWrM4O6sT2wLtvWimBgQ0HPGxF2h6otTV4VC98cyEe1x12EgMFOewy1cRY7QP68VBaGpOS6twrCJtLw9PvOPfeY6Fkur65ESAp1N7ELgJRHE0vtQljY01EYM30BwesDIZpUaGqmepzRhFKOkfiQDtgXM3GZOUXJHWR06j2T9PYcmDEFRkPPtLABI42UJPwtIb75kiXjv6uysob0vo746WtdIGRkuQNRjyyh\u002FsQKBgQDLxUCWAexSrrbnr5UITlMwocY0Fuo1U9pjABfB5MnrWoQPWsJgAOgiXt\u002FsNRtdZDMpo7fTku2rhDueiUHWY7aLUbvvvzbuBLfNXIX7wy2qNEPMmRpn9KkzLeB0MYwMvTXgT+zD\u002Fr6lIO3RYQE9JYaojBMuykDu+2Y9C9yRGTGjbwKBgQCsU6gc8cODXKHSCovZO8M6fbOpSoc6GezozvMvD\u002Fg1sOwNwovZ4VJwIFyGTyssbjjEp\u002F5B5B\u002FDg+HGygaPubuzTyc0\u002FfZ5uxgDfMjzExMhJiol0JdgSX+m3pC\u002Fc189pcvkSAKXQrGApXN3i95OrGOj\u002FiRr1AuGH8sYk0+vWYjS7wKBgGSEAL\u002F+YtzGYmMXMaTPPioXIvY+93kmy+tZ+F4kxZXbKJmKY6eHyvppYnvaFo2TB8nagKtVJvgcWmxxuJBQz5MZ1mMFJ8txeFlM8qqmNLho36jlPSlafrxIPRgT+Mmv7AuiYWCtIM3D2IwYFcxb3nj13+CM1EsOp\u002FglCcBpdRrxAoGAFLL3voJLubumtFQP+Ef1a1EuA2ewVopGqrAxBbYlWk2mDQERS1qFTHKWqotX5D5ZE0YahE+igRmWRQp\u002FP0RQB3m6e+MFeBnBCKo0eP4RjinHZkNn62jorGKPgG+bQQxpMUJ1DTY1m\u002F5DoFhsm4aZcVlVhp4xxCqNeqY3LBjVFoECgYEAmOxK+rzVnF83wfTE65lMXqN8UWTOWSDsbiGzx6YSg02X67MfDk2asD\u002FyciUiCCE25lRxwm0SuaetOTMbZO5mD8ZZEq7GQSt9L+r1LFjkB\u002FwmX6tbAJI3rpAWpD0ntcASCN8QfaWh3liFMaSjkn1OmhCCrV\u002FbS+aOJ1wZwJK4jeg=","dajiang8070","wxebc91c29d4bd3fe8","码客徐","www.makexu.com","分享优质开发工具、项目实战、编程教程、AI开发、源码项目和技术资源，帮助程序员快速成长，让开发更高效。","MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEApUboIRwnBzMLC+hFy+b1Fhsy4xacSBoMfasdqMicCrK70hj+mCrUqJ2hGUn2gClNvMGyO+90p9UNhrDGCzpact8CCZCs6t7vQCrnD4PEmEKl62XcCwngrPEKP5gP6sSWDL\u002Fm8cHabF\u002FVn9HlayaS0nePd89XRgSi8gd0oh5qyUbt2s27zY3fpIsd66naVwMLn7CBwDLFKDINnFeRu\u002FsAN3SKYcwl7T1yhpPb99yoSCKA+yYaPaT85UKLOqESk6kUabPsUDDmpkZn6nHHXUQa3\u002FSJUSnn7a\u002F+YOZsSveZg4ei1AMSmXTZH\u002FnB9MuHgyZ0pnI2Bw3LR1YpNcyUoKtZfQIDAQAB","-----BEGIN PRIVATE KEY-----\nMIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQDnmf8oIN9HbAUi\nuaNZwKB\u002F3pDPtavwOLpF6PpKJsLts3fOeXHUwbNJzcjrxTe5DKKMNOk5t3cFXPtb\nBH18pEFNi1zHWkN5aZ1BrViCwYpo7FRucie7Dc9sGFeaRZMsRH+piHUkCh5I3QJM\nYCXIbsiTeavWiRCSLsmcQ2KfStSw8NO9+Tio6dTQb7lmSCBEK51zlge8tgvEyoWm\nsXCAlAz0GgzxTrIWo4saJ2ooIkX0ljvmPyTxyZ2+nXzI8RYKA1DZ38yoy4Pa+xXv\nxOa0VV5kidl8s+6F8rk7133boU+44gmKOE8lK5+a3FBkrI1D3rSxFGnQ0WIYC\u002F\u002F0\nB+TRUVFTAgMBAAECggEBAIAN+bKqWkoXQ8+rbNJXW2bYHKF8BZFRDE1TP\u002FB39heP\nv5J+O54za3pHOeyCowjCH63+I2YyNrDUdHYiyW99Mk453BatpdkfuD90JRhHAsx4\nv0ZCAA3A2QsfenBmP7WeOif2ty4yGgSXjonEL5\u002FfAS\u002FpekWoi20ISZkI+SKyMV+S\n+2+aoInmX9KcK1E\u002FM8vA6\u002FaNUOYmGM5hk1342ezQ131\u002FlwrksN4i1cuUdGaXJ8SI\nlmXTavDC1ypQKXtyigorOCW2Y\u002FAzNVjL04Pb\u002FiSsB0yjagSHU69veSLJTf+XCGFt\ne3YfScQDhLblq142RnKVfMQvePaAI3dQ1tOqgUrHuaECgYEA+DzzcmiyxOSicu37\n+Nvwc5d8DETyxBDqF\u002F1GJ6bZLwflZvBOx67K\u002FNlT9Z3L2yNGjrL0w0oQJnOWH0hb\nyW7piXXqnQ2\u002FNkNLzks0goY6zjyI3FHMvDEvdxiyz4PD6H+JeMUSANLnGztR9aFh\nAO1mgtH+TF95mUenytEYcTde4JUCgYEA7tfgcWm8SsctkahZOwbClWPDy69wxUh5\nlLDgwj1+XJ7Pa5MaACUvQV8E6LFA7HHZZCIf2JGOgzXW0UEym46Z6v2OiXOasLKN\nBwtnFytKbzOK7nkkr+U6ympW1eZXJN5A4MZRLQl2gKA8teZL8Gz+F2i0+uVlR0cb\nK7G\u002FdfAS6EcCgYEAoc8hJR9n\u002F\u002F3EgkPsbe\u002F3kXFZ86lx0SnxXYfDlg8lHIn6F5pm\nz7R5Lk3\u002Fc2fTPNmGoXe3IiEB2\u002F6WCXgiFHBOnEKXlp4iWJ2PKT5OURJr\u002FIjq8SoE\n2Vr6RJh93dRW\u002FBM+KdHThWP0LwUAzKrPz0nv+zAkoeXOHoLdtc+MLihYmO0CgYEA\nrp8glmqy4o0rMOI\u002FkttHaoeNQB8duO9bDK4hNYJWH4twpPrguJh3Kzk4UpQ9nmFC\nimY0mFcbNa0oSMd9I6QnvlnxW2ctAuEYIL1ietsIybKKcf4aJ4vV5uXGZQ7KScdA\n8dWsxdu0SyhcGrWscbSONTk1kHYlDO7c255SF\u002F0VJcMCgYB0v6C3bNIPkbAlvFlo\nBTgccv3dBUa2Zo\u002FOJa8xGW\u002FVz3RuL6qTjFRVEYJILVmrSR2fT1w44EET2fGW6cb4\nb5a\u002FDGz9scZwUBwhhMleBPUu2LL6\u002FFkuP2amFFr5uRK8GwbZ5TvrtpNgdBoMhvPb\n1+z709LIwIzFbq5WLW3OEao7MA==\n-----END PRIVATE KEY-----","码客徐的小栈","皖ICP备2024065487号-6","-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAymOTDu1kxxydfrQEgKbe\nne0+i+Bq55TY+BWkkev\u002Ffy9NtSS0Fpbz4g7rscQg6W+4CmYz4VSD6GrC3pXwjRhK\nUGZDHhUnUV9Hf6SLWepxfh8SihdqDbBu6mRKRwyQw7RBYhxLZV+udagchCtSBut1\niQ6H+ozn+3jVUdX\u002F2rGuXBt1WIWbFomPj1MIQuolSORM85nr8cqWyimgECm70imE\nTlRR0s9WkksWoF0WwFdoWWAjxo4LVNdf9\u002FEySIu5I5NuYslwWjb+T87D\u002FNkIoI92\ne1jjAOsPgl5oJ10wLjNjbOMy9+\u002FrzDDz6yAyuKMKj\u002Flhu2D35Cx8ZJDC798vTbZS\nfQIDAQAB\n-----END PUBLIC KEY-----","https:\u002F\u002Fbeian.miit.gov.cn\u002F","K8mX2pQ7vN4rT9yL6cD1wH5sJ3eF0aZB","9021000164659589","https:\u002F\u002Fwww.makexu.com\u002Fapi\u002Forder\u002Fnotify\u002Fwechat",[],{"project":34,"introHtml":143,"deployHtml":7,"tocIntro":144,"tocDeploy":145},{"id":35,"title":36,"projectCode":37,"slug":38,"summary":39,"hot":40,"sortNum":4,"status":41,"price":42,"originalPrice":43,"salesCount":4,"categoryId":44,"categoryName":45,"viewCount":45,"tagIds":46,"tagList":51,"images":64,"resources":129,"videos":135,"createTime":141,"publishTime":141,"isNew":142},"2063904906055303170","民宿预订平台","SV003","homestay-booking","本项目是一套**民宿在线预订系统**，采用前后端分离架构，覆盖从用户浏览民宿、查看房间、在线下单、支付到订单状态流转的完整预订流程。系统围绕**普通用户、房东、管理员**三角色构建：普通用户可搜索民宿、收藏心仪房源、下单预订并评价；房东可发布与管理自己的民宿和房间、处理订单；管理员负责民宿审核、用户管理、反馈处理及平台运营。系统同时提供平台数据统计与区域订单分析，辅助运营决策。",true,3,99,200,"1",null,[47,48,49,50],"2063897838560788481","2063897893363564545","2063897973206335490","2063898057671229442",[52,55,58,61],{"id":47,"name":53,"color":54,"sortNum":45,"status":45},"SpringBoot","#22c55e",{"id":48,"name":56,"color":57,"sortNum":45,"status":45},"Vue","#f59e0b",{"id":49,"name":59,"color":60,"sortNum":45,"status":45},"Redis","#ef4444",{"id":50,"name":62,"color":63,"sortNum":45,"status":45},"MySQL","#06b6d4",[65,70,76,82,87,93,99,105,111,117,123],{"id":66,"projectId":35,"resourceType":45,"name":67,"url":68,"sortNum":4,"fileId":69},"2093275132706729985","ScreenShot_2026-08-28_174501_039.png","https:\u002F\u002Fthomas-coding-pub.oss-cn-hangzhou.aliyuncs.com\u002Fimage\u002Faf697a3efbde4c1fb65045c9176b295c.png","2093274955602243586",{"id":71,"projectId":35,"resourceType":45,"name":72,"url":73,"sortNum":74,"fileId":75},"2093275132912250881","ScreenShot_2026-08-28_174515_598.png","https:\u002F\u002Fthomas-coding-pub.oss-cn-hangzhou.aliyuncs.com\u002Fimage\u002Faaf5512b4a0b456884fe255ae6e90a6c.png",1,"2093274966775869441",{"id":77,"projectId":35,"resourceType":45,"name":78,"url":79,"sortNum":80,"fileId":81},"2093275133109383169","ScreenShot_2026-08-28_174543_103.png","https:\u002F\u002Fthomas-coding-pub.oss-cn-hangzhou.aliyuncs.com\u002Fimage\u002Fff27bc552ec64811b146b72e2e2ef871.png",2,"2093274983515336705",{"id":83,"projectId":35,"resourceType":45,"name":84,"url":85,"sortNum":41,"fileId":86},"2093275133306515458","ScreenShot_2026-08-28_174439_055.png","https:\u002F\u002Fthomas-coding-pub.oss-cn-hangzhou.aliyuncs.com\u002Fimage\u002F8ade66b90a9d4ed69f22b90f8bb5e49e.png","2093274996681256961",{"id":88,"projectId":35,"resourceType":45,"name":89,"url":90,"sortNum":91,"fileId":92},"2093275133516230657","ScreenShot_2026-08-28_174605_918.png","https:\u002F\u002Fthomas-coding-pub.oss-cn-hangzhou.aliyuncs.com\u002Fimage\u002Fe890afa5f27c45fea59cad034ccbb3bc.png",4,"2093275009427746818",{"id":94,"projectId":35,"resourceType":45,"name":95,"url":96,"sortNum":97,"fileId":98},"2093275133725945858","ScreenShot_2026-08-28_174627_375.png","https:\u002F\u002Fthomas-coding-pub.oss-cn-hangzhou.aliyuncs.com\u002Fimage\u002Fed6deb38322c4ed4a7aea2552a064682.png",5,"2093275027568111618",{"id":100,"projectId":35,"resourceType":45,"name":101,"url":102,"sortNum":103,"fileId":104},"2093275133923078146","ScreenShot_2026-08-28_174657_321.png","https:\u002F\u002Fthomas-coding-pub.oss-cn-hangzhou.aliyuncs.com\u002Fimage\u002F4067d29c098a4d33a4721af5722751d6.png",6,"2093275050934579202",{"id":106,"projectId":35,"resourceType":45,"name":107,"url":108,"sortNum":109,"fileId":110},"2093275134120210433","ScreenShot_2026-08-28_174723_055.png","https:\u002F\u002Fthomas-coding-pub.oss-cn-hangzhou.aliyuncs.com\u002Fimage\u002F2775596ff7404e65822697fa7b1e0fc7.png",7,"2093275075332845570",{"id":112,"projectId":35,"resourceType":45,"name":113,"url":114,"sortNum":115,"fileId":116},"2093275134317342721","ScreenShot_2026-08-28_174734_464.png","https:\u002F\u002Fthomas-coding-pub.oss-cn-hangzhou.aliyuncs.com\u002Fimage\u002F96a82d742a92477492e414bf27414a86.png",8,"2093275097399078913",{"id":118,"projectId":35,"resourceType":45,"name":119,"url":120,"sortNum":121,"fileId":122},"2093275134514475009","ScreenShot_2026-08-28_174745_612.png","https:\u002F\u002Fthomas-coding-pub.oss-cn-hangzhou.aliyuncs.com\u002Fimage\u002F9e2898fce99641158b868682e699a75d.png",9,"2093275108304269313",{"id":124,"projectId":35,"resourceType":45,"name":125,"url":126,"sortNum":127,"fileId":128},"2093275134711607297","ScreenShot_2026-08-28_174752_705.png","https:\u002F\u002Fthomas-coding-pub.oss-cn-hangzhou.aliyuncs.com\u002Fimage\u002Fadd9e8136e64415093a2f57316ab3424.png",10,"2093275127677759490",[130],{"id":131,"projectId":35,"resourceType":132,"name":133,"url":45,"sortNum":4,"fileId":134},"2093582764109824001","source","完整源码+SQL","2093582937766592513",[136],{"id":137,"projectId":35,"title":138,"videoUrl":139,"platform":140,"description":7,"sortNum":4,"status":74},"2093593055946178562","项目介绍视频","https:\u002F\u002Fwww.bilibili.com\u002Fvideo\u002FBV1fR4y6tEKQ\u002F?share_source=copy_web&vd_source=611c5c18fb4b550a4d24d80364d15e98","bilibili","2026-06-08 16:44:10",false,"\u003Ch1 id=\"%E6%B0%91%E5%AE%BF%E9%A2%84%E8%AE%A2%E5%B9%B3%E5%8F%B0-%E2%80%94-%E9%A1%B9%E7%9B%AE%E4%BB%8B%E7%BB%8D%E6%96%87%E6%A1%A3\" tabindex=\"-1\">\u003Ca class=\"header-anchor header-anchor\" href=\"#%E6%B0%91%E5%AE%BF%E9%A2%84%E8%AE%A2%E5%B9%B3%E5%8F%B0-%E2%80%94-%E9%A1%B9%E7%9B%AE%E4%BB%8B%E7%BB%8D%E6%96%87%E6%A1%A3\" aria-hidden=\"true\">\u003C\u002Fa> 民宿预订平台 — 项目介绍文档\u003C\u002Fh1>\n\u003Ch2 id=\"%E4%B8%80%E3%80%81%E9%A1%B9%E7%9B%AE%E6%A6%82%E8%BF%B0\" tabindex=\"-1\">\u003Ca class=\"header-anchor header-anchor\" href=\"#%E4%B8%80%E3%80%81%E9%A1%B9%E7%9B%AE%E6%A6%82%E8%BF%B0\" aria-hidden=\"true\">\u003C\u002Fa> 一、项目概述\u003C\u002Fh2>\n\u003Cp>本项目是一套\u003Cstrong>民宿在线预订系统\u003C\u002Fstrong>，采用前后端分离架构，覆盖从用户浏览民宿、查看房间、在线下单、支付到订单状态流转的完整预订流程。系统围绕\u003Cstrong>普通用户、房东、管理员\u003C\u002Fstrong>三角色构建：普通用户可搜索民宿、收藏心仪房源、下单预订并评价；房东可发布与管理自己的民宿和房间、处理订单；管理员负责民宿审核、用户管理、反馈处理及平台运营。系统同时提供平台数据统计与区域订单分析，辅助运营决策。\u003C\u002Fp>\n\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth>属性\u003C\u002Fth>\n\u003Cth>说明\u003C\u002Fth>\n\u003C\u002Ftr>\n\u003C\u002Fthead>\n\u003Ctbody>\n\u003Ctr>\n\u003Ctd>项目名称\u003C\u002Ftd>\n\u003Ctd>民宿预订平台（Homestay Reservation Platform）\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>架构模式\u003C\u002Ftd>\n\u003Ctd>B\u002FS 前后端分离\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>后端技术\u003C\u002Ftd>\n\u003Ctd>Spring Boot 3.5 \u002F MyBatis-Plus 3.5.6 \u002F MySQL 8.0 \u002F Redis \u002F JWT\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>前端技术\u003C\u002Ftd>\n\u003Ctd>Vue 3 \u002F Element Plus \u002F Pinia \u002F Axios \u002F ECharts \u002F Vite\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>开发语言\u003C\u002Ftd>\n\u003Ctd>Java 21 \u002F JavaScript（ES6+）\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>适用场景\u003C\u002Ftd>\n\u003Ctd>计算机毕设、课程设计、源码学习与二次开发\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003C\u002Ftbody>\n\u003C\u002Ftable>\n\u003Ch2 id=\"%E4%BA%8C%E3%80%81%E6%8A%80%E6%9C%AF%E6%9E%B6%E6%9E%84\" tabindex=\"-1\">\u003Ca class=\"header-anchor header-anchor\" href=\"#%E4%BA%8C%E3%80%81%E6%8A%80%E6%9C%AF%E6%9E%B6%E6%9E%84\" aria-hidden=\"true\">\u003C\u002Fa> 二、技术架构\u003C\u002Fh2>\n\u003Ch3 id=\"2.1-%E5%90%8E%E7%AB%AF%E6%8A%80%E6%9C%AF%E6%A0%88\" tabindex=\"-1\">\u003Ca class=\"header-anchor header-anchor\" href=\"#2.1-%E5%90%8E%E7%AB%AF%E6%8A%80%E6%9C%AF%E6%A0%88\" aria-hidden=\"true\">\u003C\u002Fa> 2.1 后端技术栈\u003C\u002Fh3>\n\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth>类别\u003C\u002Fth>\n\u003Cth>技术选型\u003C\u002Fth>\n\u003Cth>版本\u003C\u002Fth>\n\u003Cth>说明\u003C\u002Fth>\n\u003C\u002Ftr>\n\u003C\u002Fthead>\n\u003Ctbody>\n\u003Ctr>\n\u003Ctd>核心框架\u003C\u002Ftd>\n\u003Ctd>Spring Boot\u003C\u002Ftd>\n\u003Ctd>3.5.11\u003C\u002Ftd>\n\u003Ctd>Java 企业级开发框架\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>ORM 框架\u003C\u002Ftd>\n\u003Ctd>MyBatis-Plus\u003C\u002Ftd>\n\u003Ctd>3.5.6\u003C\u002Ftd>\n\u003Ctd>增强版 MyBatis，简化 CRUD\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>数据库\u003C\u002Ftd>\n\u003Ctd>MySQL\u003C\u002Ftd>\n\u003Ctd>8.0+\u003C\u002Ftd>\n\u003Ctd>关系型数据库\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>缓存\u003C\u002Ftd>\n\u003Ctd>Spring Data Redis\u003C\u002Ftd>\n\u003Ctd>随 Spring Boot 管理\u003C\u002Ftd>\n\u003Ctd>缓存、分布式锁、JWT 令牌黑名单\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>安全认证\u003C\u002Ftd>\n\u003Ctd>java-jwt（JWT）\u003C\u002Ftd>\n\u003Ctd>4.4.0\u003C\u002Ftd>\n\u003Ctd>无状态 Token 认证\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>JSON 处理\u003C\u002Ftd>\n\u003Ctd>fastjson2 \u002F Jackson JSR310\u003C\u002Ftd>\n\u003Ctd>2.0.43 \u002F 2.21.1\u003C\u002Ftd>\n\u003Ctd>高性能 JSON 序列化；Java 8 时间类型支持\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>参数校验\u003C\u002Ftd>\n\u003Ctd>Spring Validation\u003C\u002Ftd>\n\u003Ctd>随 Spring Boot 管理\u003C\u002Ftd>\n\u003Ctd>DTO 参数校验\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>工具库\u003C\u002Ftd>\n\u003Ctd>Lombok\u003C\u002Ftd>\n\u003Ctd>随 Spring Boot 管理\u003C\u002Ftd>\n\u003Ctd>简化样板代码\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>构建工具\u003C\u002Ftd>\n\u003Ctd>Maven\u003C\u002Ftd>\n\u003Ctd>3.8+\u003C\u002Ftd>\n\u003Ctd>依赖管理与项目构建\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003C\u002Ftbody>\n\u003C\u002Ftable>\n\u003Ch3 id=\"2.2-%E5%89%8D%E7%AB%AF%E6%8A%80%E6%9C%AF%E6%A0%88\" tabindex=\"-1\">\u003Ca class=\"header-anchor header-anchor\" href=\"#2.2-%E5%89%8D%E7%AB%AF%E6%8A%80%E6%9C%AF%E6%A0%88\" aria-hidden=\"true\">\u003C\u002Fa> 2.2 前端技术栈\u003C\u002Fh3>\n\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth>类别\u003C\u002Fth>\n\u003Cth>技术选型\u003C\u002Fth>\n\u003Cth>版本\u003C\u002Fth>\n\u003Cth>说明\u003C\u002Fth>\n\u003C\u002Ftr>\n\u003C\u002Fthead>\n\u003Ctbody>\n\u003Ctr>\n\u003Ctd>核心框架\u003C\u002Ftd>\n\u003Ctd>Vue 3（Composition API）\u003C\u002Ftd>\n\u003Ctd>3.4+\u003C\u002Ftd>\n\u003Ctd>渐进式前端框架\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>UI 组件库\u003C\u002Ftd>\n\u003Ctd>Element Plus\u003C\u002Ftd>\n\u003Ctd>2.5+\u003C\u002Ftd>\n\u003Ctd>企业级桌面端组件库\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>路由\u003C\u002Ftd>\n\u003Ctd>Vue Router\u003C\u002Ftd>\n\u003Ctd>4.2+\u003C\u002Ftd>\n\u003Ctd>单页应用路由管理\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>状态管理\u003C\u002Ftd>\n\u003Ctd>Pinia\u003C\u002Ftd>\n\u003Ctd>2.1+\u003C\u002Ftd>\n\u003Ctd>Vue 官方状态管理库\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>HTTP 客户端\u003C\u002Ftd>\n\u003Ctd>Axios\u003C\u002Ftd>\n\u003Ctd>1.6+\u003C\u002Ftd>\n\u003Ctd>基于 Promise 的 HTTP 库\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>图表\u003C\u002Ftd>\n\u003Ctd>ECharts \u002F vue-echarts\u003C\u002Ftd>\n\u003Ctd>5.6+ \u002F 6.6+\u003C\u002Ftd>\n\u003Ctd>数据可视化图表库\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>日期处理\u003C\u002Ftd>\n\u003Ctd>dayjs\u003C\u002Ftd>\n\u003Ctd>1.11+\u003C\u002Ftd>\n\u003Ctd>轻量级日期时间库\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>构建工具\u003C\u002Ftd>\n\u003Ctd>Vite\u003C\u002Ftd>\n\u003Ctd>5.0+\u003C\u002Ftd>\n\u003Ctd>下一代前端构建工具\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003C\u002Ftbody>\n\u003C\u002Ftable>\n\u003Ch3 id=\"2.3-%E6%9E%B6%E6%9E%84%E5%9B%BE\" tabindex=\"-1\">\u003Ca class=\"header-anchor header-anchor\" href=\"#2.3-%E6%9E%B6%E6%9E%84%E5%9B%BE\" aria-hidden=\"true\">\u003C\u002Fa> 2.3 架构图\u003C\u002Fh3>\n\u003Cdiv class=\"code-block-wrapper\">\u003Cdiv class=\"code-block-header\">\u003Cbutton class=\"code-copy-btn\" data-code=\"┌─────────────────────────────────────────────────────────┐\n│                      浏览器（Browser）                    │\n├───────────────────────┬─────────────────────────────────┤\n│   前台页面（Front）     │     后台管理（Admin）             │\n│   localhost:5173       │     localhost:5173\u002Fadmin         │\n│   · 首页\u002F轮播图\u002F公告    │     · 数据统计仪表盘（ECharts）    │\n│   · 民宿搜索\u002F民宿详情   │     · 民宿审核（通过\u002F驳回）        │\n│   · 房间浏览\u002F在线预订   │     · 全平台订单管理              │\n│   · 我的订单\u002F收藏\u002F评价  │     · 用户管理（启用\u002F禁用）        │\n│   · 反馈建议\u002F个人中心   │     · 反馈\u002F公告\u002F轮播图管理         │\n│                       │     · 房东工作台（房源\u002F房间\u002F订单）  │\n└───────────────────────┴─────────────────────────────────┘\n                          │  HTTP \u002Fapi\u002F*\n                          ▼\n┌─────────────────────────────────────────────────────────┐\n│              Spring Boot 后端（localhost:8080）            │\n├─────────────┬──────────────┬──────────────┬──────────────┤\n│  Interceptor │  Controller  │   Service    │   Mapper     │\n│  JWT 认证     │  user\u002F民宿    │   业务逻辑    │  MyBatis-Plus│\n│  @Anonymous  │  order\u002F房东   │   事务管理    │  XML 自定义SQL│\n│  @RequireRole│  admin\u002F公告   │   定时任务    │  Redis 缓存\u002F锁│\n│  Redis黑名单  │              │   分布式锁    │              │\n└─────────────┴──────────────┴──────────────┴──────────────┘\n                          │\n                          ▼\n┌──────────────────────┐  ┌──────────────────────────────┐\n│     MySQL 8.0        │  │          Redis               │\n│     共 9 张数据表     │  │  缓存 \u002F 分布式锁 \u002F JWT黑名单 │\n└──────────────────────┘  └──────────────────────────────┘\n\" title=\"复制代码\">\u003Csvg xmlns=\"http:\u002F\u002Fwww.w3.org\u002F2000\u002Fsvg\" width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\u003Crect x=\"9\" y=\"9\" width=\"13\" height=\"13\" rx=\"2\" ry=\"2\"\u002F>\u003Cpath d=\"M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1\"\u002F>\u003C\u002Fsvg>\u003C\u002Fbutton>\u003C\u002Fdiv>\u003Cpre class=\"shiki shiki-themes github-light github-dark\" style=\"--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e\" tabindex=\"0\">\u003Ccode class=\"language-text\">\u003Cspan class=\"line\">\u003Cspan>┌─────────────────────────────────────────────────────────┐\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan>│                      浏览器（Browser）                    │\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan>├───────────────────────┬─────────────────────────────────┤\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan>│   前台页面（Front）     │     后台管理（Admin）             │\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan>│   localhost:5173       │     localhost:5173\u002Fadmin         │\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan>│   · 首页\u002F轮播图\u002F公告    │     · 数据统计仪表盘（ECharts）    │\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan>│   · 民宿搜索\u002F民宿详情   │     · 民宿审核（通过\u002F驳回）        │\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan>│   · 房间浏览\u002F在线预订   │     · 全平台订单管理              │\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan>│   · 我的订单\u002F收藏\u002F评价  │     · 用户管理（启用\u002F禁用）        │\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan>│   · 反馈建议\u002F个人中心   │     · 反馈\u002F公告\u002F轮播图管理         │\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan>│                       │     · 房东工作台（房源\u002F房间\u002F订单）  │\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan>└───────────────────────┴─────────────────────────────────┘\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan>                          │  HTTP \u002Fapi\u002F*\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan>                          ▼\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan>┌─────────────────────────────────────────────────────────┐\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan>│              Spring Boot 后端（localhost:8080）            │\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan>├─────────────┬──────────────┬──────────────┬──────────────┤\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan>│  Interceptor │  Controller  │   Service    │   Mapper     │\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan>│  JWT 认证     │  user\u002F民宿    │   业务逻辑    │  MyBatis-Plus│\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan>│  @Anonymous  │  order\u002F房东   │   事务管理    │  XML 自定义SQL│\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan>│  @RequireRole│  admin\u002F公告   │   定时任务    │  Redis 缓存\u002F锁│\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan>│  Redis黑名单  │              │   分布式锁    │              │\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan>└─────────────┴──────────────┴──────────────┴──────────────┘\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan>                          │\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan>                          ▼\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan>┌──────────────────────┐  ┌──────────────────────────────┐\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan>│     MySQL 8.0        │  │          Redis               │\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan>│     共 9 张数据表     │  │  缓存 \u002F 分布式锁 \u002F JWT黑名单 │\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan>└──────────────────────┘  └──────────────────────────────┘\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>\n\u003C\u002Fdiv>\u003Ch3 id=\"2.4-%E5%AE%89%E5%85%A8%E8%AE%BE%E8%AE%A1\" tabindex=\"-1\">\u003Ca class=\"header-anchor header-anchor\" href=\"#2.4-%E5%AE%89%E5%85%A8%E8%AE%BE%E8%AE%A1\" aria-hidden=\"true\">\u003C\u002Fa> 2.4 安全设计\u003C\u002Fh3>\n\u003Cul>\n\u003Cli>\u003Cstrong>JWT 认证拦截器\u003C\u002Fstrong>：\u003Ccode>JwtInterceptor\u003C\u002Fcode> 统一拦截所有接口，解析 \u003Ccode>Authorization: Bearer &lt;token&gt;\u003C\u002Fcode> 后写入 \u003Ccode>UserContext\u003C\u002Fcode>（ThreadLocal），请求结束自动清理，防止内存泄漏；同时检查 Redis 令牌黑名单，已登出的 Token 将被拒绝\u003C\u002Fli>\n\u003Cli>\u003Cstrong>JWT 令牌黑名单\u003C\u002Fstrong>：用户登出时将 Token 存入 Redis，TTL 等于 Token 剩余有效期，确保登出后 Token 立即失效，而不是仅前端丢弃\u003C\u002Fli>\n\u003Cli>\u003Cstrong>\u003Ccode>@Anonymous\u003C\u002Fcode> 注解\u003C\u002Fstrong>：标注公开接口（如注册、登录、民宿列表、公告轮播等），免登录访问，无需维护路径白名单\u003C\u002Fli>\n\u003Cli>\u003Cstrong>\u003Ccode>@RequireRole\u003C\u002Fcode> 注解\u003C\u002Fstrong>：按角色控制接口访问（管理员=2、房东=1），权限不足返回 403\u003C\u002Fli>\n\u003Cli>\u003Cstrong>密码 MD5 加密\u003C\u002Fstrong>：注册、修改密码时使用 MD5 摘要存储，数据库不保存明文\u003C\u002Fli>\n\u003Cli>\u003Cstrong>逻辑删除\u003C\u002Fstrong>：所有业务表均含 \u003Ccode>deleted\u003C\u002Fcode> 字段，MyBatis-Plus 全局逻辑删除配置，避免物理删除造成数据丢失\u003C\u002Fli>\n\u003Cli>\u003Cstrong>统一响应与异常\u003C\u002Fstrong>：所有接口返回 \u003Ccode>Result&lt;T&gt;\u003C\u002Fcode> 统一结构，\u003Ccode>GlobalExceptionHandler\u003C\u002Fcode> 全局兜底异常并映射为统一错误码\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch2 id=\"%E4%B8%89%E3%80%81%E5%8A%9F%E8%83%BD%E6%A8%A1%E5%9D%97\" tabindex=\"-1\">\u003Ca class=\"header-anchor header-anchor\" href=\"#%E4%B8%89%E3%80%81%E5%8A%9F%E8%83%BD%E6%A8%A1%E5%9D%97\" aria-hidden=\"true\">\u003C\u002Fa> 三、功能模块\u003C\u002Fh2>\n\u003Ch3 id=\"3.1-%E5%89%8D%E5%8F%B0%E5%8A%9F%E8%83%BD%EF%BC%88%E6%99%AE%E9%80%9A%E7%94%A8%E6%88%B7%EF%BC%89\" tabindex=\"-1\">\u003Ca class=\"header-anchor header-anchor\" href=\"#3.1-%E5%89%8D%E5%8F%B0%E5%8A%9F%E8%83%BD%EF%BC%88%E6%99%AE%E9%80%9A%E7%94%A8%E6%88%B7%EF%BC%89\" aria-hidden=\"true\">\u003C\u002Fa> 3.1 前台功能（普通用户）\u003C\u002Fh3>\n\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth>模块\u003C\u002Fth>\n\u003Cth>功能点\u003C\u002Fth>\n\u003Cth>说明\u003C\u002Fth>\n\u003C\u002Ftr>\n\u003C\u002Fthead>\n\u003Ctbody>\n\u003Ctr>\n\u003Ctd>首页\u003C\u002Ftd>\n\u003Ctd>轮播图展示、公告滚动、平台统计、热门推荐\u003C\u002Ftd>\n\u003Ctd>轮播 Banner、公告类型标识（重要\u002F普通）、民宿\u002F订单\u002F用户\u002F好评率统计\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>民宿搜索\u003C\u002Ftd>\n\u003Ctd>关键词、城市、价格区间、排序\u003C\u002Ftd>\n\u003Ctd>支持按名称\u002F描述\u002F地址模糊搜索；价格区间筛选；价格升降序、评分降序\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>民宿详情\u003C\u002Ftd>\n\u003Ctd>民宿信息、房间列表、设施、入住须知\u003C\u002Ftd>\n\u003Ctd>展示民宿封面、多图、设施标签、入住\u002F退房时间、联系电话及所有上架房间\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>在线预订\u003C\u002Ftd>\n\u003Ctd>选择日期、入住人数、自动计价\u003C\u002Ftd>\n\u003Ctd>按入住\u002F退房日期自动计算天数与总价，生成订单号，下单即原子扣减房间库存\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>我的订单\u003C\u002Ftd>\n\u003Ctd>订单列表、状态筛选、支付\u002F取消\u003C\u002Ftd>\n\u003Ctd>订单全生命周期管理；待支付订单 30 分钟内未支付由定时任务自动取消并释放库存\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>订单评价\u003C\u002Ftd>\n\u003Ctd>完成订单后评价\u003C\u002Ftd>\n\u003Ctd>仅已完成订单可评价，支持评分（1-5 星）与文字内容\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>收藏\u003C\u002Ftd>\n\u003Ctd>收藏\u002F取消收藏、我的收藏列表\u003C\u002Ftd>\n\u003Ctd>支持分页查看收藏的民宿及收藏状态校验\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>反馈建议\u003C\u002Ftd>\n\u003Ctd>提交反馈、查看我的反馈\u003C\u002Ftd>\n\u003Ctd>提交标题与内容，管理员处理后可查看回复\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>个人中心\u003C\u002Ftd>\n\u003Ctd>修改资料、上传头像、修改密码\u003C\u002Ftd>\n\u003Ctd>昵称\u002F手机号\u002F邮箱\u002F头像可编辑；修改密码需验证原密码\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003C\u002Ftbody>\n\u003C\u002Ftable>\n\u003Ch3 id=\"3.2-%E6%88%BF%E4%B8%9C%E7%AB%AF%E5%8A%9F%E8%83%BD%EF%BC%88%E8%A7%92%E8%89%B2%EF%BC%9A%E6%88%BF%E4%B8%9C%EF%BC%89\" tabindex=\"-1\">\u003Ca class=\"header-anchor header-anchor\" href=\"#3.2-%E6%88%BF%E4%B8%9C%E7%AB%AF%E5%8A%9F%E8%83%BD%EF%BC%88%E8%A7%92%E8%89%B2%EF%BC%9A%E6%88%BF%E4%B8%9C%EF%BC%89\" aria-hidden=\"true\">\u003C\u002Fa> 3.2 房东端功能（角色：房东）\u003C\u002Fh3>\n\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth>模块\u003C\u002Fth>\n\u003Cth>功能点\u003C\u002Fth>\n\u003Cth>说明\u003C\u002Fth>\n\u003C\u002Ftr>\n\u003C\u002Fthead>\n\u003Ctbody>\n\u003Ctr>\n\u003Ctd>数据概览\u003C\u002Ftd>\n\u003Ctd>房源、订单、评价等统计\u003C\u002Ftd>\n\u003Ctd>房东专属工作台首页，实时汇总经营数据\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>民宿管理\u003C\u002Ftd>\n\u003Ctd>发布\u002F编辑民宿、上架\u002F下架\u003C\u002Ftd>\n\u003Ctd>新发布的民宿进入\u003Cstrong>待审核\u003C\u002Fstrong>状态，管理员审核通过后方可上架销售\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>房间管理\u003C\u002Ftd>\n\u003Ctd>新增\u002F编辑\u002F删除房间、上下架\u003C\u002Ftd>\n\u003Ctd>维护房型、面积、床型、价格、原价、库存、设施与多图\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>订单管理\u003C\u002Ftd>\n\u003Ctd>确认订单、办理入住、完成订单、拒绝退款\u003C\u002Ftd>\n\u003Ctd>按订单状态推进：待确认→已确认→已入住→已完成；可拒绝订单并退款释放库存\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>评价管理\u003C\u002Ftd>\n\u003Ctd>查看收到的评价、回复评价\u003C\u002Ftd>\n\u003Ctd>对用户评价进行回复互动\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003C\u002Ftbody>\n\u003C\u002Ftable>\n\u003Ch3 id=\"3.3-%E5%90%8E%E5%8F%B0%E5%8A%9F%E8%83%BD%EF%BC%88%E7%AE%A1%E7%90%86%E5%91%98%EF%BC%89\" tabindex=\"-1\">\u003Ca class=\"header-anchor header-anchor\" href=\"#3.3-%E5%90%8E%E5%8F%B0%E5%8A%9F%E8%83%BD%EF%BC%88%E7%AE%A1%E7%90%86%E5%91%98%EF%BC%89\" aria-hidden=\"true\">\u003C\u002Fa> 3.3 后台功能（管理员）\u003C\u002Fh3>\n\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth>模块\u003C\u002Fth>\n\u003Cth>功能点\u003C\u002Fth>\n\u003Cth>说明\u003C\u002Fth>\n\u003C\u002Ftr>\n\u003C\u002Fthead>\n\u003Ctbody>\n\u003Ctr>\n\u003Ctd>仪表盘\u003C\u002Ftd>\n\u003Ctd>平台数据统计、区域订单统计\u003C\u002Ftd>\n\u003Ctd>ECharts 可视化：民宿\u002F用户\u002F订单等指标，支持按省份\u002F城市维度分析订单分布\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>民宿审核\u003C\u002Ftd>\n\u003Ctd>审核通过\u002F驳回\u003C\u002Ftd>\n\u003Ctd>对房东提交的待审核民宿进行审核，驳回需填写原因，房东修改后可重新提交\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>订单管理\u003C\u002Ftd>\n\u003Ctd>全平台订单查询\u003C\u002Ftd>\n\u003Ctd>按订单号、用户、状态多条件分页检索\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>用户管理\u003C\u002Ftd>\n\u003Ctd>用户列表、启用\u002F禁用、新增\u002F编辑用户\u003C\u002Ftd>\n\u003Ctd>按用户名\u002F手机号\u002F角色\u002F状态检索，可创建用户（含房东）\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>反馈管理\u003C\u002Ftd>\n\u003Ctd>反馈列表、回复、删除\u003C\u002Ftd>\n\u003Ctd>处理用户反馈并回复\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>公告管理\u003C\u002Ftd>\n\u003Ctd>公告增删改查\u003C\u002Ftd>\n\u003Ctd>类型（普通\u002F重要）、启用\u002F禁用\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>轮播图管理\u003C\u002Ftd>\n\u003Ctd>轮播图增删改查\u003C\u002Ftd>\n\u003Ctd>标题、图片、跳转链接、排序、启用\u002F禁用\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>个人信息\u003C\u002Ftd>\n\u003Ctd>查看\u002F修改管理员信息\u003C\u002Ftd>\n\u003Ctd>与前台个人中心一致\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003C\u002Ftbody>\n\u003C\u002Ftable>\n\u003Ch2 id=\"%E5%9B%9B%E3%80%81%E9%A1%B9%E7%9B%AE%E4%BA%AE%E7%82%B9\" tabindex=\"-1\">\u003Ca class=\"header-anchor header-anchor\" href=\"#%E5%9B%9B%E3%80%81%E9%A1%B9%E7%9B%AE%E4%BA%AE%E7%82%B9\" aria-hidden=\"true\">\u003C\u002Fa> 四、项目亮点\u003C\u002Fh2>\n\u003Ch3 id=\"4.1-%E4%B8%89%E8%A7%92%E8%89%B2%E6%9D%83%E9%99%90%E4%BD%93%E7%B3%BB\" tabindex=\"-1\">\u003Ca class=\"header-anchor header-anchor\" href=\"#4.1-%E4%B8%89%E8%A7%92%E8%89%B2%E6%9D%83%E9%99%90%E4%BD%93%E7%B3%BB\" aria-hidden=\"true\">\u003C\u002Fa> 4.1 三角色权限体系\u003C\u002Fh3>\n\u003Cp>系统基于 \u003Ccode>role\u003C\u002Fcode> 字段实现**普通用户（0）\u002F 房东（1）\u002F 管理员（2）**三角色模型：\u003C\u002Fp>\n\u003Cul>\n\u003Cli>注册接口仅允许注册普通用户或房东，管理员账号只能由已有管理员创建；\u003C\u002Fli>\n\u003Cli>房东与管理员共用 \u003Ccode>\u002Fadmin\u003C\u002Fcode> 后台，前端路由守卫与后端 \u003Ccode>@RequireRole\u003C\u002Fcode> 双重校验，房东仅能看到自己的工作台菜单（我的民宿\u002F房间\u002F订单\u002F评价），管理员仅能看到平台管理菜单；\u003C\u002Fli>\n\u003Cli>订单详情等敏感接口额外校验归属（\u003Ccode>userId\u003C\u002Fcode> \u002F \u003Ccode>landlordId\u003C\u002Fcode>），杜绝越权访问。\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3 id=\"4.2-%E6%B0%91%E5%AE%BF%E5%AE%A1%E6%A0%B8%E6%9C%BA%E5%88%B6\" tabindex=\"-1\">\u003Ca class=\"header-anchor header-anchor\" href=\"#4.2-%E6%B0%91%E5%AE%BF%E5%AE%A1%E6%A0%B8%E6%9C%BA%E5%88%B6\" aria-hidden=\"true\">\u003C\u002Fa> 4.2 民宿审核机制\u003C\u002Fh3>\n\u003Cp>房东发布的民宿默认进入\u003Cstrong>待审核\u003C\u002Fstrong>状态，管理员审核通过后方可对用户展示与预订：\u003C\u002Fp>\n\u003Cul>\n\u003Cli>管理员驳回时需填写驳回原因，房东修改后重新提交，自动回到待审核状态；\u003C\u002Fli>\n\u003Cli>已下架民宿可重新上架，上架仅限已审核通过或已下架状态的民宿。\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3 id=\"4.3-%E8%AE%A2%E5%8D%95%E5%85%A8%E6%B5%81%E7%A8%8B%E7%8A%B6%E6%80%81%E6%9C%BA\" tabindex=\"-1\">\u003Ca class=\"header-anchor header-anchor\" href=\"#4.3-%E8%AE%A2%E5%8D%95%E5%85%A8%E6%B5%81%E7%A8%8B%E7%8A%B6%E6%80%81%E6%9C%BA\" aria-hidden=\"true\">\u003C\u002Fa> 4.3 订单全流程状态机\u003C\u002Fh3>\n\u003Cp>订单状态完整覆盖预订生命周期，并通过 \u003Ccode>OrderStatusEnum\u003C\u002Fcode> 枚举统一管理：\u003C\u002Fp>\n\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth>状态\u003C\u002Fth>\n\u003Cth>说明\u003C\u002Fth>\n\u003Cth>可执行操作\u003C\u002Fth>\n\u003C\u002Ftr>\n\u003C\u002Fthead>\n\u003Ctbody>\n\u003Ctr>\n\u003Ctd>待支付\u003C\u002Ftd>\n\u003Ctd>下单后生成，30 分钟内有效\u003C\u002Ftd>\n\u003Ctd>支付、取消\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>待确认\u003C\u002Ftd>\n\u003Ctd>已支付，等待房东确认\u003C\u002Ftd>\n\u003Ctd>房东确认、用户取消\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>已确认\u003C\u002Ftd>\n\u003Ctd>房东已确认\u003C\u002Ftd>\n\u003Ctd>房东办理入住\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>已入住\u003C\u002Ftd>\n\u003Ctd>用户已入住\u003C\u002Ftd>\n\u003Ctd>房东完成订单\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>已完成\u003C\u002Ftd>\n\u003Ctd>订单完结，恢复库存\u003C\u002Ftd>\n\u003Ctd>用户评价\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>已取消 \u002F 已退款\u003C\u002Ftd>\n\u003Ctd>取消或拒绝订单\u003C\u002Ftd>\n\u003Ctd>释放库存\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003C\u002Ftbody>\n\u003C\u002Ftable>\n\u003Ch3 id=\"4.4-%E5%BA%93%E5%AD%98%E9%98%B2%E8%B6%85%E5%8D%96%E4%B8%8E%E6%94%AF%E4%BB%98%E8%B6%85%E6%97%B6%E8%87%AA%E5%8A%A8%E5%8F%96%E6%B6%88\" tabindex=\"-1\">\u003Ca class=\"header-anchor header-anchor\" href=\"#4.4-%E5%BA%93%E5%AD%98%E9%98%B2%E8%B6%85%E5%8D%96%E4%B8%8E%E6%94%AF%E4%BB%98%E8%B6%85%E6%97%B6%E8%87%AA%E5%8A%A8%E5%8F%96%E6%B6%88\" aria-hidden=\"true\">\u003C\u002Fa> 4.4 库存防超卖与支付超时自动取消\u003C\u002Fh3>\n\u003Cul>\n\u003Cli>\u003Cstrong>库存防超卖\u003C\u002Fstrong>：下单时通过 MySQL 原子扣减（\u003Ccode>UPDATE room SET stock = stock - 1 WHERE stock &gt; 0\u003C\u002Fcode>）与 Redis 分布式锁（\u003Ccode>RedisUtil.tryLock()\u003C\u002Fcode>，锁键格式 \u003Ccode>order:lock:room:{roomId}\u003C\u002Fcode>）双重保障，避免并发下单导致超卖；取消\u002F完成\u002F退款时自动恢复库存；\u003C\u002Fli>\n\u003Cli>\u003Cstrong>定时任务\u003C\u002Fstrong>：\u003Ccode>OrderExpireTask\u003C\u002Fcode> 每分钟（cron \u003Ccode>0 * * * * ?\u003C\u002Fcode>）扫描一次，自动取消支付超时的待支付订单并恢复库存，防止死单占用库存。\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3 id=\"4.5-%E5%A4%9A%E6%9D%A1%E4%BB%B6%E7%BB%84%E5%90%88%E6%90%9C%E7%B4%A2\" tabindex=\"-1\">\u003Ca class=\"header-anchor header-anchor\" href=\"#4.5-%E5%A4%9A%E6%9D%A1%E4%BB%B6%E7%BB%84%E5%90%88%E6%90%9C%E7%B4%A2\" aria-hidden=\"true\">\u003C\u002Fa> 4.5 多条件组合搜索\u003C\u002Fh3>\n\u003Cp>民宿列表接口支持\u003Cstrong>关键词 + 城市 + 价格区间 + 日期 + 排序\u003C\u002Fstrong>多维组合检索：\u003C\u002Fp>\n\u003Cul>\n\u003Cli>关键词匹配名称、描述、详细地址；\u003C\u002Fli>\n\u003Cli>价格区间通过房间表子查询过滤符合条件的民宿；\u003C\u002Fli>\n\u003Cli>支持价格升\u002F降序、评分降序排序；\u003C\u002Fli>\n\u003Cli>首页统计、推荐民宿、热门排序等场景均有对应接口支撑。\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3 id=\"4.6-%E4%BB%A3%E7%A0%81%E8%A7%84%E8%8C%83%E6%80%A7\" tabindex=\"-1\">\u003Ca class=\"header-anchor header-anchor\" href=\"#4.6-%E4%BB%A3%E7%A0%81%E8%A7%84%E8%8C%83%E6%80%A7\" aria-hidden=\"true\">\u003C\u002Fa> 4.6 代码规范性\u003C\u002Fh3>\n\u003Cul>\n\u003Cli>全局统一异常处理（\u003Ccode>GlobalExceptionHandler\u003C\u002Fcode>），错误码枚举化管理（\u003Ccode>ErrorCode\u003C\u002Fcode>）；\u003C\u002Fli>\n\u003Cli>统一响应体（\u003Ccode>Result&lt;T&gt;\u003C\u002Fcode>），所有接口返回格式一致；\u003C\u002Fli>\n\u003Cli>所有数据库操作使用 Lambda 表达式构建条件（\u003Ccode>LambdaQueryWrapper\u003C\u002Fcode>），避免字段名硬编码；\u003C\u002Fli>\n\u003Cli>实体继承 \u003Ccode>BaseEntity\u003C\u002Fcode>，公共字段（id、createTime、updateTime、deleted）统一维护；\u003C\u002Fli>\n\u003Cli>状态字段全部枚举化（订单、民宿、用户角色\u002F状态），前端直接展示状态文本；\u003C\u002Fli>\n\u003Cli>文件上传路径集中配置（\u003Ccode>file.upload-path\u003C\u002Fcode>），默认头像、上传资源走统一静态映射。\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3 id=\"4.7-redis-%E5%85%A8%E5%8A%9F%E8%83%BD%E9%9B%86%E6%88%90\" tabindex=\"-1\">\u003Ca class=\"header-anchor header-anchor\" href=\"#4.7-redis-%E5%85%A8%E5%8A%9F%E8%83%BD%E9%9B%86%E6%88%90\" aria-hidden=\"true\">\u003C\u002Fa> 4.7 Redis 全功能集成\u003C\u002Fh3>\n\u003Cp>项目深度集成 Redis，覆盖缓存、分布式锁、JWT 令牌黑名单三大场景：\u003C\u002Fp>\n\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth>场景\u003C\u002Fth>\n\u003Cth>实现方式\u003C\u002Fth>\n\u003Cth>说明\u003C\u002Fth>\n\u003C\u002Ftr>\n\u003C\u002Fthead>\n\u003Ctbody>\n\u003Ctr>\n\u003Ctd>数据缓存\u003C\u002Ftd>\n\u003Ctd>\u003Ccode>@Cacheable\u003C\u002Fcode> \u002F \u003Ccode>@CacheEvict\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>轮播图（10 分钟）、民宿详情（5 分钟）等热点数据缓存，写入时自动失效\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>分布式锁\u003C\u002Ftd>\n\u003Ctd>\u003Ccode>RedisUtil.tryLock()\u003C\u002Fcode> \u002F \u003Ccode>releaseLock()\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>订单创建时按房间加锁，防止并发超卖；Lua 脚本保证释放锁的原子性\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>JWT 黑名单\u003C\u002Ftd>\n\u003Ctd>\u003Ccode>RedisTemplate\u003C\u002Fcode> 直接操作\u003C\u002Ftd>\n\u003Ctd>登出时将 Token 写入 Redis，TTL = Token 剩余有效期；\u003Ccode>JwtInterceptor\u003C\u002Fcode> 校验时先查黑名单\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>库存管理\u003C\u002Ftd>\n\u003Ctd>\u003Ccode>RedisUtil.decrementStock()\u003C\u002Fcode> \u002F \u003Ccode>incrementStock()\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>Redis 端 Lua 脚本实现库存原子操作\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>防重复提交\u003C\u002Ftd>\n\u003Ctd>\u003Ccode>RedisUtil.setRepeatSubmit()\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>基于 \u003Ccode>SETNX\u003C\u002Fcode> 实现的接口幂等性保护\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003C\u002Ftbody>\n\u003C\u002Ftable>\n\u003Cp>配置类 \u003Ccode>RedisConfig\u003C\u002Fcode> 统一管理 \u003Ccode>RedisTemplate\u003C\u002Fcode>（配置 \u003Ccode>JavaTimeModule\u003C\u002Fcode> 支持 Java 8 时间序列化）和 \u003Ccode>CacheManager\u003C\u002Fcode>（按业务数据设置不同 TTL）。\u003C\u002Fp>\n\u003Ch2 id=\"%E4%BA%94%E3%80%81%E9%A1%B9%E7%9B%AE%E7%BB%93%E6%9E%84\" tabindex=\"-1\">\u003Ca class=\"header-anchor header-anchor\" href=\"#%E4%BA%94%E3%80%81%E9%A1%B9%E7%9B%AE%E7%BB%93%E6%9E%84\" aria-hidden=\"true\">\u003C\u002Fa> 五、项目结构\u003C\u002Fh2>\n\u003Cdiv class=\"code-block-wrapper\">\u003Cdiv class=\"code-block-header\">\u003Cbutton class=\"code-copy-btn\" data-code=\"homestay-reservation-platform\u002F\n├── db\u002F                          # 数据库脚本（init.sql 建库建表+基础数据；demo.sql 演示数据）\n├── springboot\u002F                  # 后端 Spring Boot\n│   └── src\u002Fmain\u002F\n│       ├── java\u002Fcom\u002Fexample\u002F\n│       │   ├── common\u002F          # 公共模块（注解\u002F配置\u002F枚举\u002F异常\u002F拦截器\u002F工具类\u002F统一响应）\n│       │   ├── controller\u002F      # 控制器\n│       │   ├── service\u002F         # 业务逻辑\n│       │   ├── mapper\u002F          # MyBatis-Plus Mapper\n│       │   ├── entity\u002F          # 实体类\n│       │   ├── dto\u002F             # 数据传输对象\n│       │   ├── vo\u002F              # 视图对象\n│       │   ├── task\u002F            # 定时任务\n│       │   └── MainApplication.java   # 启动类\n│       └── resources\u002F           # 配置（application.yml、mapper XML、static 静态资源）\n├── vue\u002F                         # 前端 Vue 3\n│   └── src\u002F\n│       ├── api\u002F                 # 接口封装\n│       ├── components\u002F          # 公共组件\n│       ├── layouts\u002F             # 布局（FrontLayout 前台）\n│       ├── router\u002F              # 路由\n│       ├── store\u002F               # Pinia 状态\n│       ├── utils\u002F               # 工具（request）\n│       └── views\u002F               # 页面（admin 后台 \u002F 前台）\n├── uploads\u002F                     # 文件上传目录（avatars 头像 \u002F demo 演示图片）\n│   ├── avatars\u002F                # 用户头像\n│   └── demo\u002F                   # 演示数据图片（banner \u002F homestay \u002F room）\n└── doc\u002F                        # 项目文档\n\" title=\"复制代码\">\u003Csvg xmlns=\"http:\u002F\u002Fwww.w3.org\u002F2000\u002Fsvg\" width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\u003Crect x=\"9\" y=\"9\" width=\"13\" height=\"13\" rx=\"2\" ry=\"2\"\u002F>\u003Cpath d=\"M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1\"\u002F>\u003C\u002Fsvg>\u003C\u002Fbutton>\u003C\u002Fdiv>\u003Cpre class=\"shiki shiki-themes github-light github-dark\" style=\"--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e\" tabindex=\"0\">\u003Ccode class=\"language-text\">\u003Cspan class=\"line\">\u003Cspan>homestay-reservation-platform\u002F\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan>├── db\u002F                          # 数据库脚本（init.sql 建库建表+基础数据；demo.sql 演示数据）\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan>├── springboot\u002F                  # 后端 Spring Boot\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan>│   └── src\u002Fmain\u002F\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan>│       ├── java\u002Fcom\u002Fexample\u002F\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan>│       │   ├── common\u002F          # 公共模块（注解\u002F配置\u002F枚举\u002F异常\u002F拦截器\u002F工具类\u002F统一响应）\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan>│       │   ├── controller\u002F      # 控制器\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan>│       │   ├── service\u002F         # 业务逻辑\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan>│       │   ├── mapper\u002F          # MyBatis-Plus Mapper\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan>│       │   ├── entity\u002F          # 实体类\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan>│       │   ├── dto\u002F             # 数据传输对象\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan>│       │   ├── vo\u002F              # 视图对象\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan>│       │   ├── task\u002F            # 定时任务\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan>│       │   └── MainApplication.java   # 启动类\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan>│       └── resources\u002F           # 配置（application.yml、mapper XML、static 静态资源）\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan>├── vue\u002F                         # 前端 Vue 3\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan>│   └── src\u002F\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan>│       ├── api\u002F                 # 接口封装\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan>│       ├── components\u002F          # 公共组件\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan>│       ├── layouts\u002F             # 布局（FrontLayout 前台）\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan>│       ├── router\u002F              # 路由\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan>│       ├── store\u002F               # Pinia 状态\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan>│       ├── utils\u002F               # 工具（request）\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan>│       └── views\u002F               # 页面（admin 后台 \u002F 前台）\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan>├── uploads\u002F                     # 文件上传目录（avatars 头像 \u002F demo 演示图片）\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan>│   ├── avatars\u002F                # 用户头像\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan>│   └── demo\u002F                   # 演示数据图片（banner \u002F homestay \u002F room）\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan>└── doc\u002F                        # 项目文档\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>\n\u003C\u002Fdiv>",[],[]]