前言✨博主介绍:一线全栈工程师,毕设实战引路人。技术栈覆盖Java、Python、C#、PHP、Node.js及UniApp跨端开发,擅长多语言项目落地与架构设计。持续分享毕设源码、开题报告、技术选型心得与职场踩坑经验。用工程化思维写代码,帮你把毕设做成作品集。👍👍👇精彩专栏 推荐订阅👇Java精品项目案例【3000套】Python精品项目案例【500套】uniapp/微信小程序/安卓app【800套】2026-2027届Java毕业设计优质选题汇总:百个热门方向完整推荐✅2026-2027届Python毕业设计优质选题汇总:百个热门方向完整推荐✅2026-2027届小程序/APP毕业设计优质选题汇总:百个热门方向完整推荐✅✅获取源码请私信✅感兴趣的可以先收藏起来,还有大家在毕设选题,项目以及论文编写等相关问题都可以找我咨询,希望帮助更多的人❤️系统实现普通用户功能实现用户注册界面用户注册为新用户提供账号创建服务,支持手机号验证、密码设置及短信验证码校验。系统自动校验信息合法性与账号唯一性,完成实名与安全校验后生成唯一账号。流程简洁、步骤清晰,保障用户信息安全与注册体验,为后续登录及功能使用提供基础身份凭证。注册界面用户登录界面用户登录实现已注册账号的身份验证,支持手机号 + 密码、短信验证码等方式。系统校验账号密码有效性与状态,验证通过后进入系统首页,同时记录登录状态并保障会话安全。登录失败时给出明确提示,兼顾便捷性与安全性,为用户提供稳定、快速的身份认证服务。登录界面首页界面用户首页是核心入口,整合个性化服务与常用功能,直观呈现关键信息。顶部展示用户信息与快捷入口,中部推送个性化内容、待办事项与动态通知,下方陈列高频功能模块。支持快速导航、内容浏览、消息提醒及一键操作,兼顾简洁布局与实用体验,满足用户高效使用需求,提升整体使用流畅度。首页界面通知公告界面用户通过此页面可以查看到平台发布的通知公告以及系统通知,其中公告按照发布日期从高到底进行排序,当点击标题时会跳转到具体信息界面当中去,在这条消息被判定为重要事项的时候就会在列表中优先显示出来以便让用户快速获得核心资讯内容。通知公告界面酒店信息界面酒店信息模块呈现宜宾各类酒店的详细信息,包括酒店的位置、价格、房型、设施设备、用户评价等,用户可以根据自己的需求筛选和比较不同酒店,还可以直接在网站上查看酒店的实景图片和视频,以便做出更合适的选择。酒店信息界面景点信息界面景点信息模块详细介绍宜宾各个景点的相关信息,包括景点的地理位置、开放时间、门票价格、景点特色、游玩攻略等,部分景点还提供虚拟游览功能,让用户提前感受景点的魅力,为用户的景点选择提供便利。景点信息界面酒店用户功能实现酒店信息管理界面酒店用户可对自家酒店的基本信息进行全面的编辑和管理,包括酒店的名称、地址、联系方式、介绍文字、图片和视频等,还可以设置酒店的房型、价格、库存等信息,确保酒店信息在网站上的准确性和及时性。酒店信息管理界面预订信息管理界面酒店用户可以查看和管理用户对酒店的预订订单,包括订单的详细信息,如预订人姓名、联系方式、入住时间、离店时间、房型需求等,还可以对订单进行确认、修改、取消等操作,及时处理预订相关事宜。预订信息管理界面用户留言管理界面酒店用户可查看用户对酒店的留言反馈,包括用户的评价、建议和投诉等,并及时回复用户的留言,与用户进行沟通交流,解决用户的问题,提升酒店的服务质量。用户留言管理界面管理员功能实现后台首页界面管理员后台首页是管理中枢,直观展示平台核心数据统计、待处理事项与系统状态。提供快捷入口,支持用户管理、内容审核、数据查询等功能快速跳转。实时呈现运营信息与通知提醒,助力管理员高效掌握平台运行情况,提升管理效率与响应速度。后台首页界面系统用户界面系统用户模块实现平台用户全生命周期管理,支持查看用户列表、账号信息、状态等详情。提供搜索、筛选、排序功能,可对用户进行启用、禁用、编辑等操作,支持批量处理与数据导出,统一管控用户权限与账号安全,保障平台规范运行。系统用户界面景点信息管理界面全面管理景点的详细信息,包括景点的添加、编辑、删除、审核等操作,确保景点信息的准确性、完整性和及时性,还可以对景点的图片、视频等多媒体信息进行管理。景点信息管理界面酒店信息管理界面审核和管理酒店用户提交的酒店信息,确保酒店信息的真实性和合法性,还可以对酒店进行评级和推荐,为用户提供更优质的酒店选择。酒店信息管理界面系统管理界面轮系统管理模块用于前台首页轮播内容维护,支持图片上传、标题编辑、链接设置、排序及状态控制。管理员可新增、修改、删除轮播图,实时预览效果,统一控制展示顺序与上下线状态,确保展示内容规范、美观,提升用户体验。系统管理界面通知公告管理界面管理员可以发布、编辑和删除宜宾旅游相关的通知公告,如景区通知、活动公告、优惠政策等,确保用户能够及时获取最新的旅游信息。通知公告管理界面数据库参考CREATE TABLE `collect` ( `collect_id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT '收藏ID', `user_id` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '收藏人ID', `source_table` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '来源表', `source_field` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '来源字段', `source_id` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '来源ID', `title` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '标题', `img` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '封面', `create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', PRIMARY KEY (`collect_id`) USING BTREE ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='收藏'; DROP TABLE IF EXISTS `forum_type`; CREATE TABLE `forum_type` ( `type_id` smallint(5) unsigned NOT NULL AUTO_INCREMENT COMMENT '分类ID', `name` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '分类名称', `description` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '描述', `url` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '外链地址', `father_id` smallint(5) unsigned NOT NULL DEFAULT '0' COMMENT '上级分类ID', `icon` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '分类图标', `create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', PRIMARY KEY (`type_id`) USING BTREE ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='论坛分类'; insert into `forum_type` values ('1','分类一','分类一','/article/list?type_id=1','0',null,'2026-03-04 17:38:26','2026-03-04 17:38:26'); insert into `forum_type` values ('2','分类二','分类二','/article/list?type_id=2','0',null,'2026-03-04 17:38:26','2026-03-04 17:38:26'); insert into `forum_type` values ('3','分类三','分类三','/article/list?type_id=3','0',null,'2026-03-04 17:38:26','2026-03-04 17:38:26'); DROP TABLE IF EXISTS `notice`; CREATE TABLE `notice` ( `notice_id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT COMMENT '公告ID', `title` varchar(125) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '' COMMENT '标题', `content` longtext CHARACTER SET utf8 COLLATE utf8_general_ci COMMENT '正文', `create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', PRIMARY KEY (`notice_id`) USING BTREE ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='公告'; insert into `notice` values ('1','系统维护通知','<p>网站升级通知</p><p>尊敬的客户,为了提供更好的用户体验,我们将于本周三凌晨1:00-5:00进行系统维护升级,期间可能出现短暂服务中断。建议您提前保存操作数据,感谢您的理解与支持!</p>','2026-03-04 17:38:26','2026-03-04 17:38:26'); insert into `notice` values ('2','新功能上线','<p>搜索功能已优化升级!现已正式开放使用,支持关键词搜索,快去体验检索服务吧~</p>','2026-03-04 17:38:26','2026-03-04 17:38:26'); insert into `notice` values ('3','客服时间调整','<p>人工客服服务时间已延长为每日8:00-22:00(含节假日),智能客服24小时在线,随时为您解答问题。</p>','2026-03-04 17:38:26','2026-03-04 17:38:26'); insert into `notice` values ('4','规范提示','<p>请遵守《用户行为守则》:禁止发布广告、虚假信息及不当内容。共同维护友善的网络环境,违规账号将受到限制。</p>','2026-03-04 17:38:26','2026-03-04 17:38:26'); DROP TABLE IF EXISTS `article_type`; CREATE TABLE `article_type` ( `type_id` smallint(5) unsigned NOT NULL AUTO_INCREMENT COMMENT '分类ID', `display` smallint(4) unsigned NOT NULL DEFAULT '100' COMMENT '显示顺序', `name` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '分类名称', `father_id` smallint(5) unsigned NOT NULL DEFAULT '0' COMMENT '上级分类ID', `description` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '描述', `icon` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci COMMENT '分类图标', `url` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '外链地址', `create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', PRIMARY KEY (`type_id`) USING BTREE ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='文章分类'; DROP TABLE IF EXISTS `follow`; CREATE TABLE `follow` ( `follow_id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT '用户关注ID', `follower_id` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '关注人ID', `follower_avatar` varchar(255) DEFAULT NULL COMMENT '关注人头像', `follower_nickname` varchar(255) DEFAULT NULL COMMENT '关注人昵称', `followed_id` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '被关注人ID', `followed_avatar` varchar(255) DEFAULT NULL COMMENT '被关注人头像', `followed_nickname` varchar(255) DEFAULT NULL COMMENT '被关注人昵称', `create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', PRIMARY KEY (`follow_id`) USING BTREE, KEY `followed_id` (`followed_id`), KEY `follower_id` (`follower_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC COMMENT='用户关注'; DROP TABLE IF EXISTS `message`; CREATE TABLE `message` ( `message_id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT '留言板ID', `user_id` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '用户ID', `title` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '标题', `content` longtext CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '内容', `nickname` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '昵称', `avatar` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '头像', `email` varchar(125) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '留言者邮箱', `phone` varchar(11) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '留言者手机号码', `create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', `reply` longtext CHARACTER SET utf8 COLLATE utf8_general_ci COMMENT '回复', `reply_state` tinyint(2) DEFAULT '0' COMMENT '回复状态', PRIMARY KEY (`message_id`) USING BTREE ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='留言板'; DROP TABLE IF EXISTS `praise`; CREATE TABLE `praise` ( `praise_id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT '点赞ID', `user_id` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '点赞人', `create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', `source_table` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '来源表', `source_field` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '来源字段', `source_id` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '来源ID', `status` tinyint(1) NOT NULL DEFAULT '1' COMMENT '点赞状态:1为点赞,0已取消', `img` varchar(255) COLLATE utf8mb4_general_ci DEFAULT NULL, `title` varchar(255) COLLATE utf8mb4_general_ci DEFAULT NULL, PRIMARY KEY (`praise_id`) USING BTREE ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='点赞';代码参考/** * 预订信息对象 */ @Autowired public BookingInformationController(BookingInformationService service) { setService(service); } @PostMapping("/add") @Transactional public Map<String, Object> add(HttpServletRequest request) throws IOException { Map<String,Object> paramMap = service.readBody(request.getReader()); paramMap.entrySet().removeIf(entry -> { Object value = entry.getValue(); return value instanceof String && ((String) value).isEmpty(); }); BookingInformation booking_information = new BookingInformation(); booking_information.setOrdinary_user(paramMap.get("ordinary_user")==null?null:Integer.valueOf(String.valueOf(paramMap.get("ordinary_user")))); booking_information.setUser_name(paramMap.get("user_name")==null?null:String.valueOf(paramMap.get("user_name"))); booking_information.setHotel_users(paramMap.get("hotel_users")==null?null:Integer.valueOf(String.valueOf(paramMap.get("hotel_users")))); booking_information.setHotel_name(paramMap.get("hotel_name")==null?null:String.valueOf(paramMap.get("hotel_name"))); booking_information.setHotel_room_type(paramMap.get("hotel_room_type")==null?null:String.valueOf(paramMap.get("hotel_room_type"))); booking_information.setReal_time_rates(paramMap.get("real_time_rates")==null?null:Double.valueOf(String.valueOf(paramMap.get("real_time_rates")))); booking_information.setBooking_quantity(paramMap.get("booking_quantity")==null?null:Double.valueOf(String.valueOf(paramMap.get("booking_quantity")))); booking_information.setBooking_days(paramMap.get("booking_days")==null?null:Double.valueOf(String.valueOf(paramMap.get("booking_days")))); booking_information.setBooking_amount(paramMap.get("booking_amount")==null?null:Double.valueOf(String.valueOf(paramMap.get("booking_amount")))); if (paramMap.get("booking_date" ) != null && !StringUtils.isEmpty(String.valueOf(paramMap.get("booking_date" )))) { String timStr = String.valueOf(paramMap.get("booking_date" )); booking_information.setBooking_date(parseToTimestamp(timStr)); } else { booking_information.setBooking_date(null); } booking_information.setReservation_remarks(paramMap.get("reservation_remarks")==null?null:String.valueOf(paramMap.get("reservation_remarks"))); booking_information.setPay_state(paramMap.get("pay_state")==null?null:String.valueOf(paramMap.get("pay_state"))); booking_information.setPay_type(paramMap.get("pay_type")==null?null:String.valueOf(paramMap.get("pay_type"))); booking_information.setExtra(paramMap.get("extra")==null?null:String.valueOf(paramMap.get("extra"))); booking_information.setSource_table(paramMap.get("source_table")==null?null:String.valueOf(paramMap.get("source_table"))); booking_information.setSource_id(paramMap.get("source_id")==null?null:Integer.valueOf(String.valueOf(paramMap.get("source_id")))); booking_information.setSource_user_id(paramMap.get("source_user_id")==null?null:Integer.valueOf(String.valueOf(paramMap.get("source_user_id")))); booking_information.setCreate_by(paramMap.get("create_by")==null?null:Integer.valueOf(String.valueOf(paramMap.get("create_by")))); this.addEntity(booking_information); System.out.println("预订信息新增成功"); return success(1); } @PostMapping("/set") @Transactional public Map<String, Object> set(HttpServletRequest request) throws IOException { Map<String,String> queryMap = service.readQuery(request); Map<String,String> configMap = service.readConfig(request); Map<String,Object> paramMap = service.readBody(request.getReader()); paramMap.entrySet().removeIf(entry -> { Object value = entry.getValue(); return value instanceof String && ((String) value).isEmpty(); }); BookingInformation booking_information = new BookingInformation(); booking_information.setOrdinary_user(paramMap.get("ordinary_user")==null?null:Integer.valueOf(String.valueOf(paramMap.get("ordinary_user")))); booking_information.setUser_name(paramMap.get("user_name")==null?null:String.valueOf(paramMap.get("user_name"))); booking_information.setHotel_users(paramMap.get("hotel_users")==null?null:Integer.valueOf(String.valueOf(paramMap.get("hotel_users")))); booking_information.setHotel_name(paramMap.get("hotel_name")==null?null:String.valueOf(paramMap.get("hotel_name"))); booking_information.setHotel_room_type(paramMap.get("hotel_room_type")==null?null:String.valueOf(paramMap.get("hotel_room_type"))); booking_information.setReal_time_rates(paramMap.get("real_time_rates")==null?null:Double.valueOf(String.valueOf(paramMap.get("real_time_rates")))); booking_information.setBooking_quantity(paramMap.get("booking_quantity")==null?null:Double.valueOf(String.valueOf(paramMap.get("booking_quantity")))); booking_information.setBooking_days(paramMap.get("booking_days")==null?null:Double.valueOf(String.valueOf(paramMap.get("booking_days")))); booking_information.setBooking_amount(paramMap.get("booking_amount")==null?null:Double.valueOf(String.valueOf(paramMap.get("booking_amount")))); if (paramMap.get("booking_date" ) != null && !StringUtils.isEmpty(String.valueOf(paramMap.get("booking_date" )))) { String timStr = String.valueOf(paramMap.get("booking_date" )); booking_information.setBooking_date(parseToTimestamp(timStr)); } else { booking_information.setBooking_date(null); } booking_information.setReservation_remarks(paramMap.get("reservation_remarks")==null?null:String.valueOf(paramMap.get("reservation_remarks"))); booking_information.setPay_state(paramMap.get("pay_state")==null?null:String.valueOf(paramMap.get("pay_state"))); booking_information.setPay_type(paramMap.get("pay_type")==null?null:String.valueOf(paramMap.get("pay_type"))); booking_information.setSource_table(paramMap.get("source_table")==null?null:String.valueOf(paramMap.get("source_table"))); booking_information.setSource_id(paramMap.get("source_id")==null?null:Integer.valueOf(String.valueOf(paramMap.get("source_id")))); booking_information.setSource_user_id(paramMap.get("source_user_id")==null?null:Integer.valueOf(String.valueOf(paramMap.get("source_user_id")))); this.setEntity(queryMap,configMap,booking_information); System.out.println("预订信息修改成功"); return success(1); } /** * 修改支付状态 * * @param id 要修改的记录ID * @param newState 新的支付状态 * @return 提示信息:审核成功/失败 */ @Transactional @GetMapping("/update_pay_state") public String updatePayState(Long id, String newState) throws IOException { // 检查传入的状态是否合法 if (!newState.equals("未支付") && !newState.equals("已支付")) { return "非法的支付状态"; } Map<String,String> queryMap = new HashMap<>(); queryMap.put("id",String.valueOf(id)); // 根据ID查找记录 BookingInformation booking_information = service.findOne(queryMap); if (booking_information!=null) { // 更新支付状态 booking_information.setPay_state(newState); this.setEntity(queryMap,new HashMap<>(),booking_information); return "支付成功"; } else { return "支付成功:记录不存在"; /** * 论坛频道:用于汇总浏览论坛,在不同频道下展示不同论坛。(ForumType)表控制层 */ @RestController @RequestMapping("forum_type") public class ForumTypeController extends BaseController<ForumType, ForumTypeService> { /** * 服务对象 */ @Autowired public ForumTypeController(ForumTypeService service) { setService(service); } @PostMapping("/add") @Transactional public Map<String, Object> add(HttpServletRequest request) throws IOException { Map<String, Object> addMap = service.readBody(request.getReader()); // 验证参数是否合法 checkParameter(addMap, "name", "名称不能为空"); // 移除不需要的字段 addMap.keySet().removeIf(key -> key.equals("create_time") || key.equals("update_time")); // 插入数据 this.service.insert(addMap); System.out.println("论坛分类新增成功"); return success(1); } @PostMapping("/set") @Transactional public Map<String, Object> set(HttpServletRequest request) throws IOException { Map<String,Object> body = this.service.readBody(request.getReader()); ForumType forum_type = JSON.parseObject(JSON.toJSONString(body),ForumType.class); this.service.updateEntity(service.readQuery(request), service.readConfig(request), forum_type); return success(1); } @RequestMapping(value = "/del") @Transactional public Map<String, Object> del(HttpServletRequest request) { return Optional.ofNullable(service.readQuery(request)) // 获取查询条件 .filter(query -> !query.isEmpty()) // 校验查询条件是否为空 .map(query -> { // 如果查询条件合法,继续执行删除逻辑 Map<String, String> config = service.readConfig(request); // 读取配置信息 this.service.delete(query, config); // 执行删除操作 return success(1); }) .orElse(error(30000,"查询条件不能为空")); // 如果查询条件不合法,返回错误信息 } @RequestMapping("/get_obj") public Map<String, Object> obj(HttpServletRequest request) { // 读取查询条件 Map<String, String> query = service.readQuery(request); Map<String, String> config = service.readConfig(request); List resultList = service.selectBaseList(service.select(query, config)); if (resultList.size() > 0) { JSONObject jsonObject = new JSONObject(); jsonObject.put("obj",resultList.get(0)); return success(jsonObject); } else { return success(null); } } /** * 验证指定参数是否存在,如果不存在则抛出异常 */ private void checkParameter(Map<String, Object> map, String key, String errorMessage) { if (map == null || !map.containsKey(key) || map.get(key) == null) { throw new IllegalArgumentException(errorMessage); /** * 购票信息对象 */ @Autowired public TicketPurchaseInformationController(TicketPurchaseInformationService service) { setService(service); } @PostMapping("/add") @Transactional public Map<String, Object> add(HttpServletRequest request) throws IOException { Map<String,Object> paramMap = service.readBody(request.getReader()); paramMap.entrySet().removeIf(entry -> { Object value = entry.getValue(); return value instanceof String && ((String) value).isEmpty(); }); TicketPurchaseInformation ticket_purchase_information = new TicketPurchaseInformation(); ticket_purchase_information.setOrdinary_user(paramMap.get("ordinary_user")==null?null:Integer.valueOf(String.valueOf(paramMap.get("ordinary_user")))); ticket_purchase_information.setUser_name(paramMap.get("user_name")==null?null:String.valueOf(paramMap.get("user_name"))); ticket_purchase_information.setName_of_scenic_spot(paramMap.get("name_of_scenic_spot")==null?null:String.valueOf(paramMap.get("name_of_scenic_spot"))); ticket_purchase_information.setAttraction_tickets(paramMap.get("attraction_tickets")==null?null:Double.valueOf(String.valueOf(paramMap.get("attraction_tickets")))); ticket_purchase_information.setNumber_of_tickets_purchased(paramMap.get("number_of_tickets_purchased")==null?null:Double.valueOf(String.valueOf(paramMap.get("number_of_tickets_purchased")))); ticket_purchase_information.setTicket_purchase_amount(paramMap.get("ticket_purchase_amount")==null?null:Double.valueOf(String.valueOf(paramMap.get("ticket_purchase_amount")))); if (paramMap.get("ticket_purchase_time" ) != null && !StringUtils.isEmpty(String.valueOf(paramMap.get("ticket_purchase_time" )))) { String timStr = String.valueOf(paramMap.get("ticket_purchase_time" )); ticket_purchase_information.setTicket_purchase_time(parseToTimestamp(timStr)); } else { ticket_purchase_information.setTicket_purchase_time(null); } ticket_purchase_information.setTicketing_remarks(paramMap.get("ticketing_remarks")==null?null:String.valueOf(paramMap.get("ticketing_remarks"))); ticket_purchase_information.setPay_state(paramMap.get("pay_state")==null?null:String.valueOf(paramMap.get("pay_state"))); ticket_purchase_information.setPay_type(paramMap.get("pay_type")==null?null:String.valueOf(paramMap.get("pay_type"))); ticket_purchase_information.setExtra(paramMap.get("extra")==null?null:String.valueOf(paramMap.get("extra"))); ticket_purchase_information.setSource_table(paramMap.get("source_table")==null?null:String.valueOf(paramMap.get("source_table"))); ticket_purchase_information.setSource_id(paramMap.get("source_id")==null?null:Integer.valueOf(String.valueOf(paramMap.get("source_id")))); ticket_purchase_information.setSource_user_id(paramMap.get("source_user_id")==null?null:Integer.valueOf(String.valueOf(paramMap.get("source_user_id")))); ticket_purchase_information.setCreate_by(paramMap.get("create_by")==null?null:Integer.valueOf(String.valueOf(paramMap.get("create_by")))); this.addEntity(ticket_purchase_information); System.out.println("购票信息新增成功"); return success(1); } @PostMapping("/set") @Transactional public Map<String, Object> set(HttpServletRequest request) throws IOException { Map<String,String> queryMap = service.readQuery(request); Map<String,String> configMap = service.readConfig(request); Map<String,Object> paramMap = service.readBody(request.getReader()); paramMap.entrySet().removeIf(entry -> { Object value = entry.getValue(); return value instanceof String && ((String) value).isEmpty(); }); TicketPurchaseInformation ticket_purchase_information = new TicketPurchaseInformation(); ticket_purchase_information.setOrdinary_user(paramMap.get("ordinary_user")==null?null:Integer.valueOf(String.valueOf(paramMap.get("ordinary_user")))); ticket_purchase_information.setUser_name(paramMap.get("user_name")==null?null:String.valueOf(paramMap.get("user_name"))); ticket_purchase_information.setName_of_scenic_spot(paramMap.get("name_of_scenic_spot")==null?null:String.valueOf(paramMap.get("name_of_scenic_spot"))); ticket_purchase_information.setAttraction_tickets(paramMap.get("attraction_tickets")==null?null:Double.valueOf(String.valueOf(paramMap.get("attraction_tickets")))); ticket_purchase_information.setNumber_of_tickets_purchased(paramMap.get("number_of_tickets_purchased")==null?null:Double.valueOf(String.valueOf(paramMap.get("number_of_tickets_purchased")))); ticket_purchase_information.setTicket_purchase_amount(paramMap.get("ticket_purchase_amount")==null?null:Double.valueOf(String.valueOf(paramMap.get("ticket_purchase_amount")))); if (paramMap.get("ticket_purchase_time" ) != null && !StringUtils.isEmpty(String.valueOf(paramMap.get("ticket_purchase_time" )))) { String timStr = String.valueOf(paramMap.get("ticket_purchase_time" )); ticket_purchase_information.setTicket_purchase_time(parseToTimestamp(timStr)); } else { ticket_purchase_information.setTicket_purchase_time(null); } ticket_purchase_information.setTicketing_remarks(paramMap.get("ticketing_remarks")==null?null:String.valueOf(paramMap.get("ticketing_remarks"))); ticket_purchase_information.setPay_state(paramMap.get("pay_state")==null?null:String.valueOf(paramMap.get("pay_state"))); ticket_purchase_information.setPay_type(paramMap.get("pay_type")==null?null:String.valueOf(paramMap.get("pay_type"))); ticket_purchase_information.setSource_table(paramMap.get("source_table")==null?null:String.valueOf(paramMap.get("source_table"))); ticket_purchase_information.setSource_id(paramMap.get("source_id")==null?null:Integer.valueOf(String.valueOf(paramMap.get("source_id")))); ticket_purchase_information.setSource_user_id(paramMap.get("source_user_id")==null?null:Integer.valueOf(String.valueOf(paramMap.get("source_user_id")))); this.setEntity(queryMap,configMap,ticket_purchase_information); System.out.println("购票信息修改成功"); return success(1);前端:基于Vue.js框架构建用户界面,使用HTML5、CSS3和JavaScript实现页面结构与交互逻辑,通过Vue Router管理路由,Vuex或Pinia维护全局状态。采用Element UI或Vant组件库快速搭建界面,Axios封装HTTP请求实现与后端的数据通信。后端:基于ssm框架搭建,遵循Controller-Service-Mapper三层架构。Controller层接收前端请求并校验参数,Service层处理核心业务逻辑,Mapper层通过MyBatis或MyBatis-Plus完成数据库操作。使用Spring Security或Shiro结合JWT实现用户认证与权限控制。数据库:采用MySQL存储持久化数据,Redis缓存热点信息以提升系统性能。开发工具:使用IDEA开发后端,VSCode或HBuilderX开发前端,Git进行版本管理,Maven和npm分别管理前后端依赖。👇精彩专栏 推荐订阅👇Java精品项目案例【3000套】Python精品项目案例【500套】uniapp/微信小程序/安卓app【800套】2026-2027届Java毕业设计优质选题汇总:百个热门方向完整推荐✅2026-2027届Python毕业设计优质选题汇总:百个热门方向完整推荐✅2026-2027届小程序/APP毕业设计优质选题汇总:百个热门方向完整推荐✅✅获取源码请私信✅感兴趣的可以先收藏起来,还有大家在毕设选题,项目以及论文编写等相关问题都可以找我咨询,希望帮助更多的人❤️
前言✨博主介绍:一线全栈工程师,毕设实战引路人。技术栈覆盖Java、Python、C#、PHP、Node.js及UniApp跨端开发,擅长多语言项目落地与架构设计。持续分享毕设源码、开题报告、技术选型心得与职场踩坑经验。用工程化思维写代码,帮你把毕设做成作品集。👍👍👇精彩专栏 推荐订阅👇Java精品项目案例【3000套】Python精品项目案例【500套】uniapp/微信小程序/安卓app【800套】2026-2027届Java毕业设计优质选题汇总:百个热门方向完整推荐✅2026-2027届Python毕业设计优质选题汇总:百个热门方向完整推荐✅2026-2027届小程序/APP毕业设计优质选题汇总:百个热门方向完整推荐✅✅获取源码请私信✅感兴趣的可以先收藏起来,还有大家在毕设选题,项目以及论文编写等相关问题都可以找我咨询,希望帮助更多的人❤️系统实现普通用户功能实现用户注册界面用户注册为新用户提供账号创建服务,支持手机号验证、密码设置及短信验证码校验。系统自动校验信息合法性与账号唯一性,完成实名与安全校验后生成唯一账号。流程简洁、步骤清晰,保障用户信息安全与注册体验,为后续登录及功能使用提供基础身份凭证。注册界面用户登录界面用户登录实现已注册账号的身份验证,支持手机号 + 密码、短信验证码等方式。系统校验账号密码有效性与状态,验证通过后进入系统首页,同时记录登录状态并保障会话安全。登录失败时给出明确提示,兼顾便捷性与安全性,为用户提供稳定、快速的身份认证服务。登录界面首页界面用户首页是核心入口,整合个性化服务与常用功能,直观呈现关键信息。顶部展示用户信息与快捷入口,中部推送个性化内容、待办事项与动态通知,下方陈列高频功能模块。支持快速导航、内容浏览、消息提醒及一键操作,兼顾简洁布局与实用体验,满足用户高效使用需求,提升整体使用流畅度。首页界面通知公告界面用户通过此页面可以查看到平台发布的通知公告以及系统通知,其中公告按照发布日期从高到底进行排序,当点击标题时会跳转到具体信息界面当中去,在这条消息被判定为重要事项的时候就会在列表中优先显示出来以便让用户快速获得核心资讯内容。通知公告界面酒店信息界面酒店信息模块呈现宜宾各类酒店的详细信息,包括酒店的位置、价格、房型、设施设备、用户评价等,用户可以根据自己的需求筛选和比较不同酒店,还可以直接在网站上查看酒店的实景图片和视频,以便做出更合适的选择。酒店信息界面景点信息界面景点信息模块详细介绍宜宾各个景点的相关信息,包括景点的地理位置、开放时间、门票价格、景点特色、游玩攻略等,部分景点还提供虚拟游览功能,让用户提前感受景点的魅力,为用户的景点选择提供便利。景点信息界面酒店用户功能实现酒店信息管理界面酒店用户可对自家酒店的基本信息进行全面的编辑和管理,包括酒店的名称、地址、联系方式、介绍文字、图片和视频等,还可以设置酒店的房型、价格、库存等信息,确保酒店信息在网站上的准确性和及时性。酒店信息管理界面预订信息管理界面酒店用户可以查看和管理用户对酒店的预订订单,包括订单的详细信息,如预订人姓名、联系方式、入住时间、离店时间、房型需求等,还可以对订单进行确认、修改、取消等操作,及时处理预订相关事宜。预订信息管理界面用户留言管理界面酒店用户可查看用户对酒店的留言反馈,包括用户的评价、建议和投诉等,并及时回复用户的留言,与用户进行沟通交流,解决用户的问题,提升酒店的服务质量。用户留言管理界面管理员功能实现后台首页界面管理员后台首页是管理中枢,直观展示平台核心数据统计、待处理事项与系统状态。提供快捷入口,支持用户管理、内容审核、数据查询等功能快速跳转。实时呈现运营信息与通知提醒,助力管理员高效掌握平台运行情况,提升管理效率与响应速度。后台首页界面系统用户界面系统用户模块实现平台用户全生命周期管理,支持查看用户列表、账号信息、状态等详情。提供搜索、筛选、排序功能,可对用户进行启用、禁用、编辑等操作,支持批量处理与数据导出,统一管控用户权限与账号安全,保障平台规范运行。系统用户界面景点信息管理界面全面管理景点的详细信息,包括景点的添加、编辑、删除、审核等操作,确保景点信息的准确性、完整性和及时性,还可以对景点的图片、视频等多媒体信息进行管理。景点信息管理界面酒店信息管理界面审核和管理酒店用户提交的酒店信息,确保酒店信息的真实性和合法性,还可以对酒店进行评级和推荐,为用户提供更优质的酒店选择。酒店信息管理界面系统管理界面轮系统管理模块用于前台首页轮播内容维护,支持图片上传、标题编辑、链接设置、排序及状态控制。管理员可新增、修改、删除轮播图,实时预览效果,统一控制展示顺序与上下线状态,确保展示内容规范、美观,提升用户体验。系统管理界面通知公告管理界面管理员可以发布、编辑和删除宜宾旅游相关的通知公告,如景区通知、活动公告、优惠政策等,确保用户能够及时获取最新的旅游信息。通知公告管理界面数据库参考CREATE TABLE `collect` ( `collect_id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT '收藏ID', `user_id` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '收藏人ID', `source_table` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '来源表', `source_field` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '来源字段', `source_id` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '来源ID', `title` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '标题', `img` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '封面', `create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', PRIMARY KEY (`collect_id`) USING BTREE ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='收藏'; DROP TABLE IF EXISTS `forum_type`; CREATE TABLE `forum_type` ( `type_id` smallint(5) unsigned NOT NULL AUTO_INCREMENT COMMENT '分类ID', `name` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '分类名称', `description` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '描述', `url` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '外链地址', `father_id` smallint(5) unsigned NOT NULL DEFAULT '0' COMMENT '上级分类ID', `icon` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '分类图标', `create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', PRIMARY KEY (`type_id`) USING BTREE ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='论坛分类'; insert into `forum_type` values ('1','分类一','分类一','/article/list?type_id=1','0',null,'2026-03-04 17:38:26','2026-03-04 17:38:26'); insert into `forum_type` values ('2','分类二','分类二','/article/list?type_id=2','0',null,'2026-03-04 17:38:26','2026-03-04 17:38:26'); insert into `forum_type` values ('3','分类三','分类三','/article/list?type_id=3','0',null,'2026-03-04 17:38:26','2026-03-04 17:38:26'); DROP TABLE IF EXISTS `notice`; CREATE TABLE `notice` ( `notice_id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT COMMENT '公告ID', `title` varchar(125) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '' COMMENT '标题', `content` longtext CHARACTER SET utf8 COLLATE utf8_general_ci COMMENT '正文', `create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', PRIMARY KEY (`notice_id`) USING BTREE ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='公告'; insert into `notice` values ('1','系统维护通知','<p>网站升级通知</p><p>尊敬的客户,为了提供更好的用户体验,我们将于本周三凌晨1:00-5:00进行系统维护升级,期间可能出现短暂服务中断。建议您提前保存操作数据,感谢您的理解与支持!</p>','2026-03-04 17:38:26','2026-03-04 17:38:26'); insert into `notice` values ('2','新功能上线','<p>搜索功能已优化升级!现已正式开放使用,支持关键词搜索,快去体验检索服务吧~</p>','2026-03-04 17:38:26','2026-03-04 17:38:26'); insert into `notice` values ('3','客服时间调整','<p>人工客服服务时间已延长为每日8:00-22:00(含节假日),智能客服24小时在线,随时为您解答问题。</p>','2026-03-04 17:38:26','2026-03-04 17:38:26'); insert into `notice` values ('4','规范提示','<p>请遵守《用户行为守则》:禁止发布广告、虚假信息及不当内容。共同维护友善的网络环境,违规账号将受到限制。</p>','2026-03-04 17:38:26','2026-03-04 17:38:26'); DROP TABLE IF EXISTS `article_type`; CREATE TABLE `article_type` ( `type_id` smallint(5) unsigned NOT NULL AUTO_INCREMENT COMMENT '分类ID', `display` smallint(4) unsigned NOT NULL DEFAULT '100' COMMENT '显示顺序', `name` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '分类名称', `father_id` smallint(5) unsigned NOT NULL DEFAULT '0' COMMENT '上级分类ID', `description` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '描述', `icon` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci COMMENT '分类图标', `url` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '外链地址', `create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', PRIMARY KEY (`type_id`) USING BTREE ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='文章分类'; DROP TABLE IF EXISTS `follow`; CREATE TABLE `follow` ( `follow_id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT '用户关注ID', `follower_id` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '关注人ID', `follower_avatar` varchar(255) DEFAULT NULL COMMENT '关注人头像', `follower_nickname` varchar(255) DEFAULT NULL COMMENT '关注人昵称', `followed_id` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '被关注人ID', `followed_avatar` varchar(255) DEFAULT NULL COMMENT '被关注人头像', `followed_nickname` varchar(255) DEFAULT NULL COMMENT '被关注人昵称', `create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', PRIMARY KEY (`follow_id`) USING BTREE, KEY `followed_id` (`followed_id`), KEY `follower_id` (`follower_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC COMMENT='用户关注'; DROP TABLE IF EXISTS `message`; CREATE TABLE `message` ( `message_id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT '留言板ID', `user_id` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '用户ID', `title` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '标题', `content` longtext CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '内容', `nickname` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '昵称', `avatar` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '头像', `email` varchar(125) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '留言者邮箱', `phone` varchar(11) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '留言者手机号码', `create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', `reply` longtext CHARACTER SET utf8 COLLATE utf8_general_ci COMMENT '回复', `reply_state` tinyint(2) DEFAULT '0' COMMENT '回复状态', PRIMARY KEY (`message_id`) USING BTREE ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='留言板'; DROP TABLE IF EXISTS `praise`; CREATE TABLE `praise` ( `praise_id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT '点赞ID', `user_id` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '点赞人', `create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', `source_table` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '来源表', `source_field` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '来源字段', `source_id` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '来源ID', `status` tinyint(1) NOT NULL DEFAULT '1' COMMENT '点赞状态:1为点赞,0已取消', `img` varchar(255) COLLATE utf8mb4_general_ci DEFAULT NULL, `title` varchar(255) COLLATE utf8mb4_general_ci DEFAULT NULL, PRIMARY KEY (`praise_id`) USING BTREE ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='点赞';代码参考/** * 预订信息对象 */ @Autowired public BookingInformationController(BookingInformationService service) { setService(service); } @PostMapping("/add") @Transactional public Map<String, Object> add(HttpServletRequest request) throws IOException { Map<String,Object> paramMap = service.readBody(request.getReader()); paramMap.entrySet().removeIf(entry -> { Object value = entry.getValue(); return value instanceof String && ((String) value).isEmpty(); }); BookingInformation booking_information = new BookingInformation(); booking_information.setOrdinary_user(paramMap.get("ordinary_user")==null?null:Integer.valueOf(String.valueOf(paramMap.get("ordinary_user")))); booking_information.setUser_name(paramMap.get("user_name")==null?null:String.valueOf(paramMap.get("user_name"))); booking_information.setHotel_users(paramMap.get("hotel_users")==null?null:Integer.valueOf(String.valueOf(paramMap.get("hotel_users")))); booking_information.setHotel_name(paramMap.get("hotel_name")==null?null:String.valueOf(paramMap.get("hotel_name"))); booking_information.setHotel_room_type(paramMap.get("hotel_room_type")==null?null:String.valueOf(paramMap.get("hotel_room_type"))); booking_information.setReal_time_rates(paramMap.get("real_time_rates")==null?null:Double.valueOf(String.valueOf(paramMap.get("real_time_rates")))); booking_information.setBooking_quantity(paramMap.get("booking_quantity")==null?null:Double.valueOf(String.valueOf(paramMap.get("booking_quantity")))); booking_information.setBooking_days(paramMap.get("booking_days")==null?null:Double.valueOf(String.valueOf(paramMap.get("booking_days")))); booking_information.setBooking_amount(paramMap.get("booking_amount")==null?null:Double.valueOf(String.valueOf(paramMap.get("booking_amount")))); if (paramMap.get("booking_date" ) != null && !StringUtils.isEmpty(String.valueOf(paramMap.get("booking_date" )))) { String timStr = String.valueOf(paramMap.get("booking_date" )); booking_information.setBooking_date(parseToTimestamp(timStr)); } else { booking_information.setBooking_date(null); } booking_information.setReservation_remarks(paramMap.get("reservation_remarks")==null?null:String.valueOf(paramMap.get("reservation_remarks"))); booking_information.setPay_state(paramMap.get("pay_state")==null?null:String.valueOf(paramMap.get("pay_state"))); booking_information.setPay_type(paramMap.get("pay_type")==null?null:String.valueOf(paramMap.get("pay_type"))); booking_information.setExtra(paramMap.get("extra")==null?null:String.valueOf(paramMap.get("extra"))); booking_information.setSource_table(paramMap.get("source_table")==null?null:String.valueOf(paramMap.get("source_table"))); booking_information.setSource_id(paramMap.get("source_id")==null?null:Integer.valueOf(String.valueOf(paramMap.get("source_id")))); booking_information.setSource_user_id(paramMap.get("source_user_id")==null?null:Integer.valueOf(String.valueOf(paramMap.get("source_user_id")))); booking_information.setCreate_by(paramMap.get("create_by")==null?null:Integer.valueOf(String.valueOf(paramMap.get("create_by")))); this.addEntity(booking_information); System.out.println("预订信息新增成功"); return success(1); } @PostMapping("/set") @Transactional public Map<String, Object> set(HttpServletRequest request) throws IOException { Map<String,String> queryMap = service.readQuery(request); Map<String,String> configMap = service.readConfig(request); Map<String,Object> paramMap = service.readBody(request.getReader()); paramMap.entrySet().removeIf(entry -> { Object value = entry.getValue(); return value instanceof String && ((String) value).isEmpty(); }); BookingInformation booking_information = new BookingInformation(); booking_information.setOrdinary_user(paramMap.get("ordinary_user")==null?null:Integer.valueOf(String.valueOf(paramMap.get("ordinary_user")))); booking_information.setUser_name(paramMap.get("user_name")==null?null:String.valueOf(paramMap.get("user_name"))); booking_information.setHotel_users(paramMap.get("hotel_users")==null?null:Integer.valueOf(String.valueOf(paramMap.get("hotel_users")))); booking_information.setHotel_name(paramMap.get("hotel_name")==null?null:String.valueOf(paramMap.get("hotel_name"))); booking_information.setHotel_room_type(paramMap.get("hotel_room_type")==null?null:String.valueOf(paramMap.get("hotel_room_type"))); booking_information.setReal_time_rates(paramMap.get("real_time_rates")==null?null:Double.valueOf(String.valueOf(paramMap.get("real_time_rates")))); booking_information.setBooking_quantity(paramMap.get("booking_quantity")==null?null:Double.valueOf(String.valueOf(paramMap.get("booking_quantity")))); booking_information.setBooking_days(paramMap.get("booking_days")==null?null:Double.valueOf(String.valueOf(paramMap.get("booking_days")))); booking_information.setBooking_amount(paramMap.get("booking_amount")==null?null:Double.valueOf(String.valueOf(paramMap.get("booking_amount")))); if (paramMap.get("booking_date" ) != null && !StringUtils.isEmpty(String.valueOf(paramMap.get("booking_date" )))) { String timStr = String.valueOf(paramMap.get("booking_date" )); booking_information.setBooking_date(parseToTimestamp(timStr)); } else { booking_information.setBooking_date(null); } booking_information.setReservation_remarks(paramMap.get("reservation_remarks")==null?null:String.valueOf(paramMap.get("reservation_remarks"))); booking_information.setPay_state(paramMap.get("pay_state")==null?null:String.valueOf(paramMap.get("pay_state"))); booking_information.setPay_type(paramMap.get("pay_type")==null?null:String.valueOf(paramMap.get("pay_type"))); booking_information.setSource_table(paramMap.get("source_table")==null?null:String.valueOf(paramMap.get("source_table"))); booking_information.setSource_id(paramMap.get("source_id")==null?null:Integer.valueOf(String.valueOf(paramMap.get("source_id")))); booking_information.setSource_user_id(paramMap.get("source_user_id")==null?null:Integer.valueOf(String.valueOf(paramMap.get("source_user_id")))); this.setEntity(queryMap,configMap,booking_information); System.out.println("预订信息修改成功"); return success(1); } /** * 修改支付状态 * * @param id 要修改的记录ID * @param newState 新的支付状态 * @return 提示信息:审核成功/失败 */ @Transactional @GetMapping("/update_pay_state") public String updatePayState(Long id, String newState) throws IOException { // 检查传入的状态是否合法 if (!newState.equals("未支付") && !newState.equals("已支付")) { return "非法的支付状态"; } Map<String,String> queryMap = new HashMap<>(); queryMap.put("id",String.valueOf(id)); // 根据ID查找记录 BookingInformation booking_information = service.findOne(queryMap); if (booking_information!=null) { // 更新支付状态 booking_information.setPay_state(newState); this.setEntity(queryMap,new HashMap<>(),booking_information); return "支付成功"; } else { return "支付成功:记录不存在"; /** * 论坛频道:用于汇总浏览论坛,在不同频道下展示不同论坛。(ForumType)表控制层 */ @RestController @RequestMapping("forum_type") public class ForumTypeController extends BaseController<ForumType, ForumTypeService> { /** * 服务对象 */ @Autowired public ForumTypeController(ForumTypeService service) { setService(service); } @PostMapping("/add") @Transactional public Map<String, Object> add(HttpServletRequest request) throws IOException { Map<String, Object> addMap = service.readBody(request.getReader()); // 验证参数是否合法 checkParameter(addMap, "name", "名称不能为空"); // 移除不需要的字段 addMap.keySet().removeIf(key -> key.equals("create_time") || key.equals("update_time")); // 插入数据 this.service.insert(addMap); System.out.println("论坛分类新增成功"); return success(1); } @PostMapping("/set") @Transactional public Map<String, Object> set(HttpServletRequest request) throws IOException { Map<String,Object> body = this.service.readBody(request.getReader()); ForumType forum_type = JSON.parseObject(JSON.toJSONString(body),ForumType.class); this.service.updateEntity(service.readQuery(request), service.readConfig(request), forum_type); return success(1); } @RequestMapping(value = "/del") @Transactional public Map<String, Object> del(HttpServletRequest request) { return Optional.ofNullable(service.readQuery(request)) // 获取查询条件 .filter(query -> !query.isEmpty()) // 校验查询条件是否为空 .map(query -> { // 如果查询条件合法,继续执行删除逻辑 Map<String, String> config = service.readConfig(request); // 读取配置信息 this.service.delete(query, config); // 执行删除操作 return success(1); }) .orElse(error(30000,"查询条件不能为空")); // 如果查询条件不合法,返回错误信息 } @RequestMapping("/get_obj") public Map<String, Object> obj(HttpServletRequest request) { // 读取查询条件 Map<String, String> query = service.readQuery(request); Map<String, String> config = service.readConfig(request); List resultList = service.selectBaseList(service.select(query, config)); if (resultList.size() > 0) { JSONObject jsonObject = new JSONObject(); jsonObject.put("obj",resultList.get(0)); return success(jsonObject); } else { return success(null); } } /** * 验证指定参数是否存在,如果不存在则抛出异常 */ private void checkParameter(Map<String, Object> map, String key, String errorMessage) { if (map == null || !map.containsKey(key) || map.get(key) == null) { throw new IllegalArgumentException(errorMessage); /** * 购票信息对象 */ @Autowired public TicketPurchaseInformationController(TicketPurchaseInformationService service) { setService(service); } @PostMapping("/add") @Transactional public Map<String, Object> add(HttpServletRequest request) throws IOException { Map<String,Object> paramMap = service.readBody(request.getReader()); paramMap.entrySet().removeIf(entry -> { Object value = entry.getValue(); return value instanceof String && ((String) value).isEmpty(); }); TicketPurchaseInformation ticket_purchase_information = new TicketPurchaseInformation(); ticket_purchase_information.setOrdinary_user(paramMap.get("ordinary_user")==null?null:Integer.valueOf(String.valueOf(paramMap.get("ordinary_user")))); ticket_purchase_information.setUser_name(paramMap.get("user_name")==null?null:String.valueOf(paramMap.get("user_name"))); ticket_purchase_information.setName_of_scenic_spot(paramMap.get("name_of_scenic_spot")==null?null:String.valueOf(paramMap.get("name_of_scenic_spot"))); ticket_purchase_information.setAttraction_tickets(paramMap.get("attraction_tickets")==null?null:Double.valueOf(String.valueOf(paramMap.get("attraction_tickets")))); ticket_purchase_information.setNumber_of_tickets_purchased(paramMap.get("number_of_tickets_purchased")==null?null:Double.valueOf(String.valueOf(paramMap.get("number_of_tickets_purchased")))); ticket_purchase_information.setTicket_purchase_amount(paramMap.get("ticket_purchase_amount")==null?null:Double.valueOf(String.valueOf(paramMap.get("ticket_purchase_amount")))); if (paramMap.get("ticket_purchase_time" ) != null && !StringUtils.isEmpty(String.valueOf(paramMap.get("ticket_purchase_time" )))) { String timStr = String.valueOf(paramMap.get("ticket_purchase_time" )); ticket_purchase_information.setTicket_purchase_time(parseToTimestamp(timStr)); } else { ticket_purchase_information.setTicket_purchase_time(null); } ticket_purchase_information.setTicketing_remarks(paramMap.get("ticketing_remarks")==null?null:String.valueOf(paramMap.get("ticketing_remarks"))); ticket_purchase_information.setPay_state(paramMap.get("pay_state")==null?null:String.valueOf(paramMap.get("pay_state"))); ticket_purchase_information.setPay_type(paramMap.get("pay_type")==null?null:String.valueOf(paramMap.get("pay_type"))); ticket_purchase_information.setExtra(paramMap.get("extra")==null?null:String.valueOf(paramMap.get("extra"))); ticket_purchase_information.setSource_table(paramMap.get("source_table")==null?null:String.valueOf(paramMap.get("source_table"))); ticket_purchase_information.setSource_id(paramMap.get("source_id")==null?null:Integer.valueOf(String.valueOf(paramMap.get("source_id")))); ticket_purchase_information.setSource_user_id(paramMap.get("source_user_id")==null?null:Integer.valueOf(String.valueOf(paramMap.get("source_user_id")))); ticket_purchase_information.setCreate_by(paramMap.get("create_by")==null?null:Integer.valueOf(String.valueOf(paramMap.get("create_by")))); this.addEntity(ticket_purchase_information); System.out.println("购票信息新增成功"); return success(1); } @PostMapping("/set") @Transactional public Map<String, Object> set(HttpServletRequest request) throws IOException { Map<String,String> queryMap = service.readQuery(request); Map<String,String> configMap = service.readConfig(request); Map<String,Object> paramMap = service.readBody(request.getReader()); paramMap.entrySet().removeIf(entry -> { Object value = entry.getValue(); return value instanceof String && ((String) value).isEmpty(); }); TicketPurchaseInformation ticket_purchase_information = new TicketPurchaseInformation(); ticket_purchase_information.setOrdinary_user(paramMap.get("ordinary_user")==null?null:Integer.valueOf(String.valueOf(paramMap.get("ordinary_user")))); ticket_purchase_information.setUser_name(paramMap.get("user_name")==null?null:String.valueOf(paramMap.get("user_name"))); ticket_purchase_information.setName_of_scenic_spot(paramMap.get("name_of_scenic_spot")==null?null:String.valueOf(paramMap.get("name_of_scenic_spot"))); ticket_purchase_information.setAttraction_tickets(paramMap.get("attraction_tickets")==null?null:Double.valueOf(String.valueOf(paramMap.get("attraction_tickets")))); ticket_purchase_information.setNumber_of_tickets_purchased(paramMap.get("number_of_tickets_purchased")==null?null:Double.valueOf(String.valueOf(paramMap.get("number_of_tickets_purchased")))); ticket_purchase_information.setTicket_purchase_amount(paramMap.get("ticket_purchase_amount")==null?null:Double.valueOf(String.valueOf(paramMap.get("ticket_purchase_amount")))); if (paramMap.get("ticket_purchase_time" ) != null && !StringUtils.isEmpty(String.valueOf(paramMap.get("ticket_purchase_time" )))) { String timStr = String.valueOf(paramMap.get("ticket_purchase_time" )); ticket_purchase_information.setTicket_purchase_time(parseToTimestamp(timStr)); } else { ticket_purchase_information.setTicket_purchase_time(null); } ticket_purchase_information.setTicketing_remarks(paramMap.get("ticketing_remarks")==null?null:String.valueOf(paramMap.get("ticketing_remarks"))); ticket_purchase_information.setPay_state(paramMap.get("pay_state")==null?null:String.valueOf(paramMap.get("pay_state"))); ticket_purchase_information.setPay_type(paramMap.get("pay_type")==null?null:String.valueOf(paramMap.get("pay_type"))); ticket_purchase_information.setSource_table(paramMap.get("source_table")==null?null:String.valueOf(paramMap.get("source_table"))); ticket_purchase_information.setSource_id(paramMap.get("source_id")==null?null:Integer.valueOf(String.valueOf(paramMap.get("source_id")))); ticket_purchase_information.setSource_user_id(paramMap.get("source_user_id")==null?null:Integer.valueOf(String.valueOf(paramMap.get("source_user_id")))); this.setEntity(queryMap,configMap,ticket_purchase_information); System.out.println("购票信息修改成功"); return success(1);前端:基于Vue.js框架构建用户界面,使用HTML5、CSS3和JavaScript实现页面结构与交互逻辑,通过Vue Router管理路由,Vuex或Pinia维护全局状态。采用Element UI或Vant组件库快速搭建界面,Axios封装HTTP请求实现与后端的数据通信。后端:基于ssm框架搭建,遵循Controller-Service-Mapper三层架构。Controller层接收前端请求并校验参数,Service层处理核心业务逻辑,Mapper层通过MyBatis或MyBatis-Plus完成数据库操作。使用Spring Security或Shiro结合JWT实现用户认证与权限控制。数据库:采用MySQL存储持久化数据,Redis缓存热点信息以提升系统性能。开发工具:使用IDEA开发后端,VSCode或HBuilderX开发前端,Git进行版本管理,Maven和npm分别管理前后端依赖。👇精彩专栏 推荐订阅👇Java精品项目案例【3000套】Python精品项目案例【500套】uniapp/微信小程序/安卓app【800套】2026-2027届Java毕业设计优质选题汇总:百个热门方向完整推荐✅2026-2027届Python毕业设计优质选题汇总:百个热门方向完整推荐✅2026-2027届小程序/APP毕业设计优质选题汇总:百个热门方向完整推荐✅✅获取源码请私信✅感兴趣的可以先收藏起来,还有大家在毕设选题,项目以及论文编写等相关问题都可以找我咨询,希望帮助更多的人❤️