[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"site-config":3,"approved-friend-links":32,"project-slug-library-seat-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":144,"deployHtml":7,"tocIntro":145,"tocDeploy":146},{"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":50,"images":60,"resources":131,"videos":137,"createTime":143,"publishTime":143,"isNew":40},"2063904358346309634","图书馆座位预约系统","SV002","library-seat-booking","本项目是一个基于 Spring Boot 3 + Vue 3 前后端分离架构的图书馆座位预约系统，旨在解决高校图书馆座位占用混乱、资源浪费等问题，提供可视化选座、智能预约、信用积分管理、数据统计分析等核心功能。",false,3,99,200,"1",null,[47,48,49],"2063897838560788481","2063897893363564545","2063898057671229442",[51,54,57],{"id":47,"name":52,"color":53,"sortNum":45,"status":45},"SpringBoot","#22c55e",{"id":48,"name":55,"color":56,"sortNum":45,"status":45},"Vue","#f59e0b",{"id":49,"name":58,"color":59,"sortNum":45,"status":45},"MySQL","#06b6d4",[61,66,72,78,83,89,95,101,107,113,119,125],{"id":62,"projectId":35,"resourceType":45,"name":63,"url":64,"sortNum":4,"fileId":65},"2090358128316293122","ScreenShot_2026-08-20_153554_424.png","https:\u002F\u002Fthomas-coding-pub.oss-cn-hangzhou.aliyuncs.com\u002Fimage\u002F79269c92c5d345e2a892e6e650d37d5d.png","2090357918647230465",{"id":67,"projectId":35,"resourceType":45,"name":68,"url":69,"sortNum":70,"fileId":71},"2090358128509231105","ScreenShot_2026-08-20_153621_420.png","https:\u002F\u002Fthomas-coding-pub.oss-cn-hangzhou.aliyuncs.com\u002Fimage\u002F79abb0eea9cd4b91a58069986ae21429.png",1,"2090357936510771201",{"id":73,"projectId":35,"resourceType":45,"name":74,"url":75,"sortNum":76,"fileId":77},"2090358128706363394","ScreenShot_2026-08-20_153630_470.png","https:\u002F\u002Fthomas-coding-pub.oss-cn-hangzhou.aliyuncs.com\u002Fimage\u002Fe726a917bb0a4d0da9d747f36dd5d1dc.png",2,"2090357953212489730",{"id":79,"projectId":35,"resourceType":45,"name":80,"url":81,"sortNum":41,"fileId":82},"2090358128895107073","ScreenShot_2026-08-20_153648_270.png","https:\u002F\u002Fthomas-coding-pub.oss-cn-hangzhou.aliyuncs.com\u002Fimage\u002F5a3b841ce5264e56addbed0018ece4ad.png","2090357972380459009",{"id":84,"projectId":35,"resourceType":45,"name":85,"url":86,"sortNum":87,"fileId":88},"2090358129096433665","ScreenShot_2026-08-20_153738_663.png","https:\u002F\u002Fthomas-coding-pub.oss-cn-hangzhou.aliyuncs.com\u002Fimage\u002Fbf7ecbbfb4cc42e493ca95bb841aa612.png",4,"2090357992118853633",{"id":90,"projectId":35,"resourceType":45,"name":91,"url":92,"sortNum":93,"fileId":94},"2090358129289371650","ScreenShot_2026-08-20_153747_192.png","https:\u002F\u002Fthomas-coding-pub.oss-cn-hangzhou.aliyuncs.com\u002Fimage\u002F86c4e8231ea8430da890216da2f37500.png",5,"2090358019549601794",{"id":96,"projectId":35,"resourceType":45,"name":97,"url":98,"sortNum":99,"fileId":100},"2090358129486503937","ScreenShot_2026-08-20_153803_350.png","https:\u002F\u002Fthomas-coding-pub.oss-cn-hangzhou.aliyuncs.com\u002Fimage\u002Fb8914143996e4f79a5ab1feb19698329.png",6,"2090358042446307330",{"id":102,"projectId":35,"resourceType":45,"name":103,"url":104,"sortNum":105,"fileId":106},"2090358129675247618","ScreenShot_2026-08-20_153817_712.png","https:\u002F\u002Fthomas-coding-pub.oss-cn-hangzhou.aliyuncs.com\u002Fimage\u002F019704570c4a4a8cb8810c57c158e6e8.png",7,"2090358057306726401",{"id":108,"projectId":35,"resourceType":45,"name":109,"url":110,"sortNum":111,"fileId":112},"2090358129868185602","ScreenShot_2026-08-20_153827_433.png","https:\u002F\u002Fthomas-coding-pub.oss-cn-hangzhou.aliyuncs.com\u002Fimage\u002Fa9409efc434140c7b30d19ad4a155e38.png",8,"2090358077653295106",{"id":114,"projectId":35,"resourceType":45,"name":115,"url":116,"sortNum":117,"fileId":118},"2090358130065317889","ScreenShot_2026-08-20_153844_172.png","https:\u002F\u002Fthomas-coding-pub.oss-cn-hangzhou.aliyuncs.com\u002Fimage\u002F916492528a3746a0aa0d8a07e36d0dfb.png",9,"2090358090617888769",{"id":120,"projectId":35,"resourceType":45,"name":121,"url":122,"sortNum":123,"fileId":124},"2090358130258255873","ScreenShot_2026-08-20_153855_039.png","https:\u002F\u002Fthomas-coding-pub.oss-cn-hangzhou.aliyuncs.com\u002Fimage\u002F78afda40b7c64a3a9bd02c4a8d597ee6.png",10,"2090358108972163073",{"id":126,"projectId":35,"resourceType":45,"name":127,"url":128,"sortNum":129,"fileId":130},"2090358130451193857","ScreenShot_2026-08-20_153916_150.png","https:\u002F\u002Fthomas-coding-pub.oss-cn-hangzhou.aliyuncs.com\u002Fimage\u002Fac19e09200d34e49b2d8f7454c483234.png",11,"2090358121865453570",[132],{"id":133,"projectId":35,"resourceType":134,"name":135,"url":45,"sortNum":4,"fileId":136},"2090428788665262081","doc","完整源码+SQL文件","2090428757568692225",[138],{"id":139,"projectId":35,"title":140,"videoUrl":141,"platform":142,"description":7,"sortNum":4,"status":70},"2090431725168795650","项目演示视频","https:\u002F\u002Fwww.bilibili.com\u002Fvideo\u002FBV1Bn8c6CERc\u002F?share_source=copy_web&vd_source=611c5c18fb4b550a4d24d80364d15e98","bilibili","2026-06-08 16:41:59","\u003Ch1 id=\"%E5%9B%BE%E4%B9%A6%E9%A6%86%E5%BA%A7%E4%BD%8D%E9%A2%84%E7%BA%A6%E7%B3%BB%E7%BB%9F-%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=\"#%E5%9B%BE%E4%B9%A6%E9%A6%86%E5%BA%A7%E4%BD%8D%E9%A2%84%E7%BA%A6%E7%B3%BB%E7%BB%9F-%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>，采用前后端分离架构，覆盖从用户浏览楼层座位、在线预约、签到签退、续约离席回归到信用积分管理的完整业务流程。系统同时提供后台管理端，支持楼层区域配置、座位管理、预约管理和数据统计。\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>图书馆座位预约系统（Library Reservation System）\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.2 \u002F MyBatis-Plus 3.5 \u002F MySQL 8.0 \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.2.3\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.5\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>jjwt（JWT）\u003C\u002Ftd>\n\u003Ctd>0.12.3\u003C\u002Ftd>\n\u003Ctd>无状态 Token 认证\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>密码加密\u003C\u002Ftd>\n\u003Ctd>BCrypt（Hutool）\u003C\u002Ftd>\n\u003Ctd>5.8.26\u003C\u002Ftd>\n\u003Ctd>慢哈希 + 随机盐值\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>API 文档\u003C\u002Ftd>\n\u003Ctd>Knife4j（OpenAPI 3）\u003C\u002Ftd>\n\u003Ctd>4.4.0\u003C\u002Ftd>\n\u003Ctd>Swagger 增强 UI\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>工具库\u003C\u002Ftd>\n\u003Ctd>Hutool\u003C\u002Ftd>\n\u003Ctd>5.8.26\u003C\u002Ftd>\n\u003Ctd>Java 通用工具集\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.21\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.6.3\u003C\u002Ftd>\n\u003Ctd>企业级桌面端组件库\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>路由\u003C\u002Ftd>\n\u003Ctd>Vue Router\u003C\u002Ftd>\n\u003Ctd>4.3.0\u003C\u002Ftd>\n\u003Ctd>单页应用路由管理\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>状态管理\u003C\u002Ftd>\n\u003Ctd>Pinia\u003C\u002Ftd>\n\u003Ctd>2.1.7\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.15.2\u003C\u002Ftd>\n\u003Ctd>基于 Promise 的 HTTP 库\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>图表\u003C\u002Ftd>\n\u003Ctd>ECharts\u003C\u002Ftd>\n\u003Ctd>5.5.0\u003C\u002Ftd>\n\u003Ctd>数据可视化图表库\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>构建工具\u003C\u002Ftd>\n\u003Ctd>Vite\u003C\u002Ftd>\n\u003Ctd>5.2.0\u003C\u002Ftd>\n\u003Ctd>下一代前端构建工具\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>自动导入\u003C\u002Ftd>\n\u003Ctd>unplugin-auto-import\u003C\u002Ftd>\n\u003Ctd>0.17.5\u003C\u002Ftd>\n\u003Ctd>API 自动按需导入\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│   前台页面（Portal）    │     后台管理（Admin）             │\n│   localhost:5173       │     localhost:5173\u002Fadmin         │\n│   · 首页\u002F轮播公告       │     · 仪表盘\u002F数据统计              │\n│   · 楼层座位浏览\u002F预约    │     · 楼层\u002F区域\u002F座位 CRUD         │\n│   · 我的预约\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认证     │  portal\u002F 前台  │  业务逻辑     │  MyBatis-Plus│\n│  管理员鉴权   │  admin\u002F 后台  │   事务管理    │  XML 自定义SQL│\n└─────────────┴──────────────┴──────────────┴──────────────┘\n                          │\n                          ▼\n┌─────────────────────────────────────────────────────────┐\n│                MySQL 8.0（yc_library）                    │\n│                      共 11 张数据表                       │\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>│   前台页面（Portal）    │     后台管理（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数据统计              │\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan>│   · 楼层座位浏览\u002F预约    │     · 楼层\u002F区域\u002F座位 CRUD         │\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan>│   · 我的预约\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认证     │  portal\u002F 前台  │  业务逻辑     │  MyBatis-Plus│\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan>│  管理员鉴权   │  admin\u002F 后台  │   事务管理    │  XML 自定义SQL│\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（yc_library）                    │\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan>│                      共 11 张数据表                       │\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>JwtAuthInterceptor\u003C\u002Fcode>（认证）+ \u003Ccode>AdminAuthInterceptor\u003C\u002Fcode>（鉴权），按路径和执行顺序分层控制\u003C\u002Fli>\n\u003Cli>\u003Cstrong>密码 BCrypt 加密\u003C\u002Fstrong>：使用慢哈希算法加随机盐值，有效抵御彩虹表攻击\u003C\u002Fli>\n\u003Cli>\u003Cstrong>\u003Ccode>@Anonymous\u003C\u002Fcode> 注解\u003C\u002Fstrong>：标注公开接口（如注册、登录、首页轮播公告），无需额外维护白名单\u003C\u002Fli>\n\u003Cli>\u003Cstrong>CORS 精准控制\u003C\u002Fstrong>：仅允许特定来源跨域，携带认证信息\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%E5%AD%A6%E7%94%9F%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%E5%AD%A6%E7%94%9F%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 和已发布公告列表\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>座位浏览\u003C\u002Ftd>\n\u003Ctd>楼层列表、区域详情、座位状态查看\u003C\u002Ftd>\n\u003Ctd>按楼层→区域层级展示；支持静音区\u002F讨论区\u002F电子阅览区分类；区分空闲\u002F已预约\u002F故障状态\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>预约座位\u003C\u002Ftd>\n\u003Ctd>选择日期时段、时段冲突检测、创建预约\u003C\u002Ftd>\n\u003Ctd>单次最长4小时；信用分≥60且非黑名单用户可预约；同用户同时间段仅能预约一个座位\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>签到签退\u003C\u002Ftd>\n\u003Ctd>到场签到、离场签退\u003C\u002Ftd>\n\u003Ctd>预约后15分钟内需签到，超时自动释放并扣信用分；正常签退加5信用分\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>续约\u003C\u002Ftd>\n\u003Ctd>使用中预约延长使用时间\u003C\u002Ftd>\n\u003Ctd>仅可续约一次，续约时长+原时长≤4小时，且不与其他预约冲突\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>离席回归\u003C\u002Ftd>\n\u003Ctd>临时离开座位、返回座位\u003C\u002Ftd>\n\u003Ctd>离席后座位标记为临时占用；超过10分钟未回归自动释放并扣信用分\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>座位满时加入排队；当前用户签退\u002F取消后按排队序号通知；10分钟内确认有效\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>我的预约\u003C\u002Ftd>\n\u003Ctd>预约列表、状态筛选\u003C\u002Ftd>\n\u003Ctd>支持按待签到\u002F使用中\u002F已完成\u002F已取消\u002F未签到（超时）筛选\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>信用积分\u003C\u002Ftd>\n\u003Ctd>信用记录查询\u003C\u002Ftd>\n\u003Ctd>初始100分；签到使用+5分；超时未签到-10分；离席超时-10分；管理员可手动调整\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>昵称\u002F邮箱\u002F手机号\u002F性别\u002F头像可编辑\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003C\u002Ftbody>\n\u003C\u002Ftable>\n\u003Ch3 id=\"3.2-%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.2-%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.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>ECharts 可视化图表\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讨论区\u002F电子阅览区）、电源、靠窗、座位类型\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>座位管理\u003C\u002Ftd>\n\u003Ctd>座位增删改查、状态管理\u003C\u002Ftd>\n\u003Ctd>行号\u002F列号\u002F座位编号；空闲\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>用户列表、启用\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解除黑名单\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发布状态\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%BF%A1%E7%94%A8%E7%A7%AF%E5%88%86%E4%BD%93%E7%B3%BB\" tabindex=\"-1\">\u003Ca class=\"header-anchor header-anchor\" href=\"#4.1-%E4%BF%A1%E7%94%A8%E7%A7%AF%E5%88%86%E4%BD%93%E7%B3%BB\" aria-hidden=\"true\">\u003C\u002Fa> 4.1 信用积分体系\u003C\u002Fh3>\n\u003Cp>每位用户初始拥有 \u003Cstrong>100 信用分\u003C\u002Fstrong>（最高 100 分，不可超过）。系统通过以下规则自动维护信用分：\u003C\u002Fp>\n\u003Cul>\n\u003Cli>正常签到使用并签退：\u003Cstrong>+5 分\u003C\u002Fstrong>\u003C\u002Fli>\n\u003Cli>预约后 15 分钟未签到（超时自动释放）：\u003Cstrong>-10 分\u003C\u002Fstrong>\u003C\u002Fli>\n\u003Cli>离席超时 10 分钟未回归：\u003Cstrong>-10 分\u003C\u002Fstrong>\u003C\u002Fli>\n\u003Cli>信用分低于 60 分时\u003Cstrong>禁止预约\u003C\u002Fstrong>\u003C\u002Fli>\n\u003Cli>信用分上限 100 分，加分时不超过上限\u003C\u002Fli>\n\u003Cli>管理员可手动调整用户信用分（总分不超过 100）\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3 id=\"4.2-%E5%80%99%E8%A1%A5%E9%98%9F%E5%88%97%E6%9C%BA%E5%88%B6\" tabindex=\"-1\">\u003Ca class=\"header-anchor header-anchor\" href=\"#4.2-%E5%80%99%E8%A1%A5%E9%98%9F%E5%88%97%E6%9C%BA%E5%88%B6\" aria-hidden=\"true\">\u003C\u002Fa> 4.2 候补队列机制\u003C\u002Fh3>\n\u003Cp>当目标座位在目标时段已被预约时，用户可选择加入候补队列。当前用户签退或取消预约时，系统自动按排队序号通知候补用户，被通知用户需在 \u003Cstrong>10 分钟内确认\u003C\u002Fstrong>，超时自动顺延至下一位。\u003C\u002Fp>\n\u003Ch3 id=\"4.3-%E7%A6%BB%E5%B8%AD%E5%9B%9E%E5%BD%92%E6%9C%BA%E5%88%B6\" tabindex=\"-1\">\u003Ca class=\"header-anchor header-anchor\" href=\"#4.3-%E7%A6%BB%E5%B8%AD%E5%9B%9E%E5%BD%92%E6%9C%BA%E5%88%B6\" aria-hidden=\"true\">\u003C\u002Fa> 4.3 离席回归机制\u003C\u002Fh3>\n\u003Cp>用户在使用座位过程中可临时离开（如去洗手间、取书），系统记录离席时间。若超过 \u003Cstrong>10 分钟\u003C\u002Fstrong>未回归，自动释放座位并扣除信用分。回归后座位恢复正常使用状态。\u003C\u002Fp>\n\u003Ch3 id=\"4.4-%E7%BB%AD%E7%BA%A6%E5%8A%9F%E8%83%BD\" tabindex=\"-1\">\u003Ca class=\"header-anchor header-anchor\" href=\"#4.4-%E7%BB%AD%E7%BA%A6%E5%8A%9F%E8%83%BD\" aria-hidden=\"true\">\u003C\u002Fa> 4.4 续约功能\u003C\u002Fh3>\n\u003Cp>使用中的预约可申请续约一次，系统自动校验续约后总时长是否超过4小时上限以及是否与后续预约冲突。\u003C\u002Fp>\n\u003Ch3 id=\"4.5-%E5%AE%9A%E6%97%B6%E4%BB%BB%E5%8A%A1%E8%87%AA%E5%8A%A8%E5%A4%84%E7%90%86\" tabindex=\"-1\">\u003Ca class=\"header-anchor header-anchor\" href=\"#4.5-%E5%AE%9A%E6%97%B6%E4%BB%BB%E5%8A%A1%E8%87%AA%E5%8A%A8%E5%A4%84%E7%90%86\" aria-hidden=\"true\">\u003C\u002Fa> 4.5 定时任务自动处理\u003C\u002Fh3>\n\u003Cp>\u003Ccode>@Scheduled\u003C\u002Fcode> 定时任务每分钟执行三项检查：\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Cstrong>超时未签到处理\u003C\u002Fstrong>：释放超过 15 分钟未签到的预约\u003C\u002Fli>\n\u003Cli>\u003Cstrong>候补过期处理\u003C\u002Fstrong>：标记超过 10 分钟未确认的候补为过期\u003C\u002Fli>\n\u003Cli>\u003Cstrong>离席超时处理\u003C\u002Fstrong>：释放离席超过 10 分钟的座位\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3 id=\"4.6-%E9%A2%84%E7%BA%A6%E5%86%B2%E7%AA%81%E6%A3%80%E6%B5%8B\" tabindex=\"-1\">\u003Ca class=\"header-anchor header-anchor\" href=\"#4.6-%E9%A2%84%E7%BA%A6%E5%86%B2%E7%AA%81%E6%A3%80%E6%B5%8B\" aria-hidden=\"true\">\u003C\u002Fa> 4.6 预约冲突检测\u003C\u002Fh3>\n\u003Cp>创建预约时进行多重校验：\u003C\u002Fp>\n\u003Col>\n\u003Cli>\u003Cstrong>时段重叠检测\u003C\u002Fstrong>：同一座位同一时段不能有冲突预约\u003C\u002Fli>\n\u003Cli>\u003Cstrong>用户重叠检测\u003C\u002Fstrong>：同一用户同一时段只能有一个预约\u003C\u002Fli>\n\u003Cli>\u003Cstrong>黑名单校验\u003C\u002Fstrong>：在有效黑名单期内的用户禁止预约\u003C\u002Fli>\n\u003Cli>\u003Cstrong>信用分校验\u003C\u002Fstrong>：低于60分禁止预约\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Ch3 id=\"4.7-%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.7-%E4%BB%A3%E7%A0%81%E8%A7%84%E8%8C%83%E6%80%A7\" aria-hidden=\"true\">\u003C\u002Fa> 4.7 代码规范性\u003C\u002Fh3>\n\u003Cul>\n\u003Cli>全局统一异常处理（\u003Ccode>GlobalExceptionHandler\u003C\u002Fcode>），错误码枚举化管理\u003C\u002Fli>\n\u003Cli>分页统一返回结构（\u003Ccode>PageResult\u003C\u002Fcode>），前端无需适配不同接口\u003C\u002Fli>\n\u003Cli>所有数据库操作使用 Lambda 表达式构建条件，避免字段名硬编码\u003C\u002Fli>\n\u003Cli>统一响应体（\u003Ccode>Result&lt;T&gt;\u003C\u002Fcode>），所有接口返回格式一致\u003C\u002Fli>\n\u003C\u002Ful>\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=\"library-reservation-system\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统一响应）\n│       │   ├── config\u002F          # 配置（跨域\u002F拦截器\u002FMyBatis-Plus）\n│       │   ├── controller\u002F      # 控制器（admin 后台 \u002F portal 前台 \u002F 文件上传）\n│       │   ├── dto\u002F             # 数据传输对象\n│       │   ├── entity\u002F          # 实体类\n│       │   ├── mapper\u002F          # MyBatis-Plus Mapper\n│       │   ├── security\u002F        # JWT 认证与拦截器\n│       │   ├── service\u002F         # 业务逻辑\n│       │   ├── task\u002F            # 定时任务\n│       │   ├── utils\u002F           # 工具类\n│       │   ├── vo\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             # 布局（PortalLayout 前台 \u002F AdminLayout 后台）\n│       ├── router\u002F              # 路由\n│       ├── stores\u002F              # Pinia 状态\n│       ├── utils\u002F               # 工具（request、file）\n│       └── views\u002F               # 页面（admin 后台 \u002F 前台）\n└── uploads\u002F                     # 文件上传目录（avatar 头像 \u002F demo 演示图）\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>library-reservation-system\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统一响应）\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan>│       │   ├── config\u002F          # 配置（跨域\u002F拦截器\u002FMyBatis-Plus）\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan>│       │   ├── controller\u002F      # 控制器（admin 后台 \u002F portal 前台 \u002F 文件上传）\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan>│       │   ├── dto\u002F             # 数据传输对象\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan>│       │   ├── entity\u002F          # 实体类\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan>│       │   ├── mapper\u002F          # MyBatis-Plus Mapper\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan>│       │   ├── security\u002F        # JWT 认证与拦截器\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan>│       │   ├── service\u002F         # 业务逻辑\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan>│       │   ├── task\u002F            # 定时任务\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan>│       │   ├── utils\u002F           # 工具类\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan>│       │   ├── vo\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             # 布局（PortalLayout 前台 \u002F AdminLayout 后台）\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan>│       ├── router\u002F              # 路由\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan>│       ├── stores\u002F              # Pinia 状态\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan>│       ├── utils\u002F               # 工具（request、file）\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan>│       └── views\u002F               # 页面（admin 后台 \u002F 前台）\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan>└── uploads\u002F                     # 文件上传目录（avatar 头像 \u002F demo 演示图）\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>\n\u003C\u002Fdiv>",[],[]]