基于SpringBoot实现功能最全电影购票与信息资讯平台

这篇具有很好参考价值的文章主要介绍了基于SpringBoot实现功能最全电影购票与信息资讯平台。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

作者主页:编程指南针

作者简介:Java领域优质创作者、CSDN博客专家 、CSDN内容合伙人、掘金特邀作者、阿里云博客专家、51CTO特邀作者、多年架构师设计经验、腾讯课堂常驻讲师

主要内容:Java项目、Python项目、前端项目、人工智能与大数据、简历模板、学习资料、面试题库、技术互助

收藏点赞不迷路  关注作者有好处

文末获取源码 

项目编号:BS-PT-103

一,环境介绍

语言环境:Java:  jdk1.8

数据库:Mysql: mysql5.7

应用服务器:Tomcat:  tomcat8.5.31

开发工具:IDEA或eclipse

开发技术:Springboot+Mybatis+freemarker

特色功能:短信发送、沙箱支付宝支付、电影排片、按座购票、数据推荐等

二,项目简介

电影院的快速发展,线下的订票方式费时费力,建立一个线上的电影售票系统可以有效帮助人们知道什么时候有新的电影,而不需要电影院花费极大的代价宣传。

现在确定本系统用例模型有三种,分别是游客、注册用户和系统管理员。下面分别对这三个角色的功能进行描述:

1) 用户

用户是该系统的前台使用者,即消费者、顾客。他们可以浏览电影、浏览影院和选座支付及发表评论。用户用例图1-1如下:

a.  登录注册;

b.  浏览电影;

c.  浏览影院;

d.  选座支付;

e.  发表评论。

基于SpringBoot实现功能最全电影购票与信息资讯平台,网站平台类,java实战项目专栏,spring boot,后端,java,电影购票平台

图1-1用户用例图

2) 影院运营专员

影院运营专员是各影院的管理者,他们负责各自影院的正常运营。影院运营专员的功能有电影管理、影厅管理、排片管理、新闻资讯管理和订单管理 。影院运营专员用例图如下1-2:

a.  电影管理;

b.  影厅管理;

c.  排片管理;

d.  新闻资讯管理;

e.  订单管理;

           

基于SpringBoot实现功能最全电影购票与信息资讯平台,网站平台类,java实战项目专栏,spring boot,后端,java,电影购票平台

图1-2 影院运营专员用例图

3) 系统管理员

系统管理员主要负责各个角色及其权限管理、地域管理、影院管理以及用户管理,系统管理员用例图1-3如下:

a.  角色管理;

b.  地域管理;

c.  影院管理;

d.  用户管理;。

基于SpringBoot实现功能最全电影购票与信息资讯平台,网站平台类,java实战项目专栏,spring boot,后端,java,电影购票平台

图1-3 系统管理员用例图

三,系统展示

系统首页

基于SpringBoot实现功能最全电影购票与信息资讯平台,网站平台类,java实战项目专栏,spring boot,后端,java,电影购票平台

在线购票

基于SpringBoot实现功能最全电影购票与信息资讯平台,网站平台类,java实战项目专栏,spring boot,后端,java,电影购票平台

基于SpringBoot实现功能最全电影购票与信息资讯平台,网站平台类,java实战项目专栏,spring boot,后端,java,电影购票平台

电影评分、评论

基于SpringBoot实现功能最全电影购票与信息资讯平台,网站平台类,java实战项目专栏,spring boot,后端,java,电影购票平台

用户注册、登录  手机发送验证码

基于SpringBoot实现功能最全电影购票与信息资讯平台,网站平台类,java实战项目专栏,spring boot,后端,java,电影购票平台

后台管理功能展示

基于SpringBoot实现功能最全电影购票与信息资讯平台,网站平台类,java实战项目专栏,spring boot,后端,java,电影购票平台

后台管理--角色管理

基于SpringBoot实现功能最全电影购票与信息资讯平台,网站平台类,java实战项目专栏,spring boot,后端,java,电影购票平台

权限分配

基于SpringBoot实现功能最全电影购票与信息资讯平台,网站平台类,java实战项目专栏,spring boot,后端,java,电影购票平台

用户管理

基于SpringBoot实现功能最全电影购票与信息资讯平台,网站平台类,java实战项目专栏,spring boot,后端,java,电影购票平台

地域管理

基于SpringBoot实现功能最全电影购票与信息资讯平台,网站平台类,java实战项目专栏,spring boot,后端,java,电影购票平台

电影管理

基于SpringBoot实现功能最全电影购票与信息资讯平台,网站平台类,java实战项目专栏,spring boot,后端,java,电影购票平台

评价管理

基于SpringBoot实现功能最全电影购票与信息资讯平台,网站平台类,java实战项目专栏,spring boot,后端,java,电影购票平台

影院管理

基于SpringBoot实现功能最全电影购票与信息资讯平台,网站平台类,java实战项目专栏,spring boot,后端,java,电影购票平台

影厅管理

基于SpringBoot实现功能最全电影购票与信息资讯平台,网站平台类,java实战项目专栏,spring boot,后端,java,电影购票平台

排片管理

基于SpringBoot实现功能最全电影购票与信息资讯平台,网站平台类,java实战项目专栏,spring boot,后端,java,电影购票平台

四,核心代码展示

package com.yuanlrc.movie.controller.admin;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;

import com.yuanlrc.movie.bean.PageBean;
import com.yuanlrc.movie.bean.Result;
import com.yuanlrc.movie.entity.common.Account;
import com.yuanlrc.movie.service.common.AccountService;

/**
 * 用户管理控制器
 * @author Administrator
 *
 */
@RequestMapping("/admin/account")
@Controller
public class AccountController {

	@Autowired
	private AccountService accountService;
	
	/**
	 * 用户列表
	 * @param model
	 * @param account
	 * @param pageBean
	 * @return
	 */
	@RequestMapping(value="/list")
	public String list(Model model,Account account,PageBean<Account> pageBean){
		model.addAttribute("pageBean", accountService.findPage(account, pageBean));
		model.addAttribute("mobile",account.getMobile() );
		return "admin/account/list";
	}
	
	/**
	 * 编辑用户状态
	 * @param account
	 * @return
	 */
	@RequestMapping(value="/edit",method=RequestMethod.POST)
	@ResponseBody
	public Result<Boolean> edit(Account account){
		Account findById = accountService.findById(account.getId());
		findById.setStatus(account.getStatus());
		//表示数据合法,可以保存到数据库
		accountService.save(findById);
		return Result.success(true);
	}
}
package com.yuanlrc.movie.controller.admin;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;

import com.yuanlrc.movie.bean.CinemaServices;
import com.yuanlrc.movie.bean.CodeMsg;
import com.yuanlrc.movie.bean.PageBean;
import com.yuanlrc.movie.bean.Result;
import com.yuanlrc.movie.entity.common.Area;
import com.yuanlrc.movie.entity.common.Cinema;
import com.yuanlrc.movie.entity.common.CinemaComment;
import com.yuanlrc.movie.service.common.AreaService;
import com.yuanlrc.movie.service.common.CinemaCommentService;
import com.yuanlrc.movie.service.common.CinemaService;
import com.yuanlrc.movie.util.ValidateEntityUtil;

/**
 * 电影院管理控制器
 * @author Administrator
 *
 */
@RequestMapping("/admin/cinema")
@Controller
public class CinemaController {

	@Autowired
	private CinemaService cinemaService;
	@Autowired
	private AreaService areaService;
	@Autowired
	private CinemaCommentService cinemaCommentService;
	
	/**
	 * 电影院列表页面
	 * @param model
	 * @return
	 */
	@RequestMapping(value="/list")
	public String list(Model model,Cinema cinema,PageBean<Cinema> pageBean){
		model.addAttribute("pageBean", cinemaService.findPage(cinema, pageBean));
		model.addAttribute("name",cinema.getName());
		return "admin/cinema/list";
	}
	
	/**
	 * 电影院添加页面
	 * @param model
	 * @return
	 */
	@RequestMapping(value="/add",method=RequestMethod.GET)
	public String add(Model model){
		model.addAttribute("provinceList", areaService.getAllProvince());
		model.addAttribute("cinemaServiceList", CinemaServices.values());
		return "admin/cinema/add";
	}
	
	/**
	 * 电影院编辑页面
	 * @param model
	 * @param id
	 * @return
	 */
	@RequestMapping(value="/edit",method=RequestMethod.GET)
	public String edit(Model model,@RequestParam(name="id",required=true)Long id){
		Cinema cinema = cinemaService.findById(id);
		model.addAttribute("cinema", cinema);
		model.addAttribute("provinceList", areaService.getAllProvince());
		model.addAttribute("cityList", areaService.getAllCity(cinema.getArea().getProvinceId()));
		model.addAttribute("districtList", areaService.getAllDistrict(cinema.getArea().getCityId()));
		model.addAttribute("cinemaServiceList", CinemaServices.values());
		return "admin/cinema/edit";
	}
	
	/**
	 * 添加电影院表单提交
	 * @param cinema
	 * @return
	 */
	@RequestMapping(value="/add",method=RequestMethod.POST)
	@ResponseBody
	public Result<Boolean> add(Cinema cinema){
		if(cinema == null){
			return Result.error(CodeMsg.DATA_ERROR);
		}
		CodeMsg validate = ValidateEntityUtil.validate(cinema);
		if(validate.getCode() != CodeMsg.SUCCESS.getCode()){
			return Result.error(validate);
		}
		//判断是否是编辑
		if(cinema.getId() != null && cinema.getId() > 0){
			Cinema findById = cinemaService.findById(cinema.getId());
			cinema.setCreateTime(findById.getCreateTime());
			cinema.setRate(findById.getRate());
			cinema.setRateCount(findById.getRateCount());
		}
		if(cinema.getArea() != null){
			Area province = areaService.findById(cinema.getArea().getProvinceId());
			Area city = areaService.findById(cinema.getArea().getCityId());
			String address = "";
			if(province != null){
				address = province.getName();
			}
			if(city != null){
				address += city.getName();
			}
			cinema.setAddress(address+cinema.getAddress());
		}
		//表示数据合法,可以保存到数据库
		if(cinemaService.save(cinema) == null){
			return Result.error(CodeMsg.ADMIN_CINEMA_SAVE_ERROR);
		}
		return Result.success(true);
	}
	
	/**
	 * 删除
	 * @param id
	 * @return
	 */
	@RequestMapping(value="/delete",method=RequestMethod.POST)
	@ResponseBody
	public Result<Boolean> delete(@RequestParam(name="id",required=true)Long id){
		try {
			cinemaService.delete(id);
		} catch (Exception e) {
			return Result.error(CodeMsg.ADMIN_CINEMA_DELETE_ERROR);
		}
		return Result.success(true);
	}
	
	/**
	 * ----------影院评价管理-------------
	 */
	/**
	 * 影院评价列表
	 * @param model
	 * @param cinemaComment
	 * @param pageBean
	 * @return
	 */
	@RequestMapping(value="/comment_list")
	public String list(Model model,CinemaComment cinemaComment,PageBean<CinemaComment> pageBean){
		model.addAttribute("pageBean", cinemaCommentService.findPage(cinemaComment, pageBean));
		model.addAttribute("content",cinemaComment.getContent());
		return "admin/cinema/comment_list";
	}
	
	/**
	 * 删除评价
	 * @param id
	 * @return
	 */
	@RequestMapping(value="/delete_comment",method=RequestMethod.POST)
	@ResponseBody
	public Result<Boolean> deleteComment(@RequestParam(name="id",required=true)Long id){
		cinemaCommentService.delete(id);
		return Result.success(true);
	}
}
package com.yuanlrc.movie.controller.admin;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;

import com.yuanlrc.movie.bean.CodeMsg;
import com.yuanlrc.movie.bean.Result;
import com.yuanlrc.movie.entity.admin.Menu;
import com.yuanlrc.movie.service.admin.MenuService;
import com.yuanlrc.movie.service.admin.OperaterLogService;
import com.yuanlrc.movie.util.MenuUtil;
import com.yuanlrc.movie.util.ValidateEntityUtil;

/**
 * 后台菜单管理控制器
 * @author Administrator
 *
 */
@RequestMapping("/admin/menu")
@Controller
public class MenuController {

	@Autowired
	private MenuService menuService;
	
	@Autowired
	private OperaterLogService operaterLogService;
	
	/**
	 * 菜单列表展示页面
	 * @param model
	 * @return
	 */
	@RequestMapping(value="/list")
	public String list(Model model){
		List<Menu> findAll = menuService.findAll();
		model.addAttribute("title","菜单列表");
		model.addAttribute("topMenus",MenuUtil.getTopMenus(findAll));
		model.addAttribute("secondMenus",MenuUtil.getSecondMenus(findAll));
		model.addAttribute("thirdMenus",MenuUtil.getThirdMenus(findAll));
		return "admin/menu/list";
	}
	
	/**
	 * 菜单添加页面
	 * @param model
	 * @return
	 */
	@RequestMapping(value="/add",method=RequestMethod.GET)
	public String add(Model model){
		List<Menu> findAll = menuService.findAll();
		model.addAttribute("title","菜单列表");
		model.addAttribute("topMenus",MenuUtil.getTopMenus(findAll));
		model.addAttribute("secondMenus",MenuUtil.getSecondMenus(findAll));
		return "admin/menu/add";
	}
	
	/**
	 * 菜单添加提交表单处理
	 * @param menu
	 * @return
	 */
	@RequestMapping(value="/add",method=RequestMethod.POST)
	@ResponseBody
	public Result<Boolean> add(Menu menu){
		if(menu == null){
			Result.error(CodeMsg.DATA_ERROR);
		}
		//用统一验证实体方法验证是否合法
		CodeMsg validate = ValidateEntityUtil.validate(menu);
		if(validate.getCode() != CodeMsg.SUCCESS.getCode()){
			return Result.error(validate);
		}
		if(menu.getParent() != null){
			if(menu.getParent().getId() == null){
				menu.setParent(null);
			}
		}
		//表示验证都通过,开始添加数据库
		if(menuService.save(menu) == null){
			Result.error(CodeMsg.ADMIN_MENU_ADD_ERROR);
		}
		//数据库添加操作成功,记录日志
		operaterLogService.add("添加菜单信息【" + menu + "】");
		return Result.success(true);
	}
	
	/**
	 * 菜单编辑页面
	 * @param model
	 * @param id
	 * @return
	 */
	@RequestMapping(value="/edit",method=RequestMethod.GET)
	public String eidt(Model model,@RequestParam(name="id",required=true)Long id){
		List<Menu> findAll = menuService.findAll();
		model.addAttribute("title","菜单列表");
		model.addAttribute("topMenus",MenuUtil.getTopMenus(findAll));
		model.addAttribute("secondMenus",MenuUtil.getSecondMenus(findAll));
		model.addAttribute("menu",menuService.find(id));
		return "admin/menu/edit";
	}
	
	/**
	 * 菜单编辑页面表单提交处理
	 * @param request
	 * @param menu
	 * @return
	 */
	@RequestMapping(value="/edit",method=RequestMethod.POST)
	@ResponseBody
	public Result<Boolean> edit(Menu menu){
		if(menu == null){
			Result.error(CodeMsg.DATA_ERROR);
		}
		if(menu.getId() == null){
			Result.error(CodeMsg.ADMIN_MENU_ID_EMPTY);
		}
		//用统一验证实体方法验证是否合法
		CodeMsg validate = ValidateEntityUtil.validate(menu);
		if(validate.getCode() != CodeMsg.SUCCESS.getCode()){
			return Result.error(validate);
		}
		if(menu.getParent() != null){
			if(menu.getParent().getId() == null){
				menu.setParent(null);
			}
		}
		Menu existMenu = menuService.find(menu.getId());
		if(existMenu == null){
			Result.error(CodeMsg.ADMIN_MENU_ID_ERROR);
		}
		//表示验证都通过,开始添加数据库
		existMenu.setIcon(menu.getIcon());
		existMenu.setName(menu.getName());
		existMenu.setParent(menu.getParent());
		existMenu.setSort(menu.getSort());
		existMenu.setUrl(menu.getUrl());
		existMenu.setButton(menu.isButton());
		existMenu.setShow(menu.isShow());
		if(menuService.save(existMenu) == null){
			Result.error(CodeMsg.ADMIN_MENU_ADD_ERROR);
		}
		//数据库添加操作成功,记录日志
		operaterLogService.add("编辑菜单信息【" + existMenu + "】");
		return Result.success(true);
	}
	
	/**
	 * 删除菜单信息
	 * @param request
	 * @param id
	 * @return
	 */
	@RequestMapping(value="/delete",method=RequestMethod.POST)
	@ResponseBody
	public Result<Boolean> delete(@RequestParam(name="id",required=true)Long id){
		try {
			menuService.delete(id);
		} catch (Exception e) {
			return Result.error(CodeMsg.ADMIN_MENU_DELETE_ERROR);
		}
		//数据库添加操作成功,记录日志
		operaterLogService.add("删除菜单信息,菜单ID【" + id + "】");
		return Result.success(true);
	}
}

五,相关作品展示

基于Java开发、Python开发、PHP开发、C#开发等相关语言开发的实战项目

基于Nodejs、Vue等前端技术开发的前端实战项目

基于微信小程序和安卓APP应用开发的相关作品

基于51单片机等嵌入式物联网开发应用

基于各类算法实现的AI智能应用

基于大数据实现的各类数据管理和推荐系统

基于SpringBoot实现功能最全电影购票与信息资讯平台,网站平台类,java实战项目专栏,spring boot,后端,java,电影购票平台

基于SpringBoot实现功能最全电影购票与信息资讯平台,网站平台类,java实战项目专栏,spring boot,后端,java,电影购票平台基于SpringBoot实现功能最全电影购票与信息资讯平台,网站平台类,java实战项目专栏,spring boot,后端,java,电影购票平台

基于SpringBoot实现功能最全电影购票与信息资讯平台,网站平台类,java实战项目专栏,spring boot,后端,java,电影购票平台

 基于SpringBoot实现功能最全电影购票与信息资讯平台,网站平台类,java实战项目专栏,spring boot,后端,java,电影购票平台基于SpringBoot实现功能最全电影购票与信息资讯平台,网站平台类,java实战项目专栏,spring boot,后端,java,电影购票平台

基于SpringBoot实现功能最全电影购票与信息资讯平台,网站平台类,java实战项目专栏,spring boot,后端,java,电影购票平台

 基于SpringBoot实现功能最全电影购票与信息资讯平台,网站平台类,java实战项目专栏,spring boot,后端,java,电影购票平台文章来源地址https://www.toymoban.com/news/detail-757322.html

到了这里,关于基于SpringBoot实现功能最全电影购票与信息资讯平台的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 基于Java的电影购票系统的设计与实现(源码+文档+数据库)

    本系统是一个网上电影售票系统,可以为用户提供方便的在线订票环境。主要实现了用户注册、登录、查询、订购电影票、管理已订购电影票等功能。通过后台管理模块可以实现对用户、播放厅、电影、影片安排、电影票等的管理等功能。本系统以IntelliJ IDEA 作为开发环境,

    2024年02月12日
    浏览(50)
  • 精品基于SpringCloud实现的电影院购票系统设计-微服务-分布式

    《[含文档+PPT+源码等]精品基于SpringCloud实现的电影院购票系统设计的设计与实现-微服务-分布式》该项目含有源码、文档、PPT、配套开发软件、软件安装教程、项目发布教程等 软件开发环境及开发工具: 开发语言:Java 框架:springcloud JDK版本:JDK1.8 服务器:tomcat7 数据库:

    2024年02月09日
    浏览(97)
  • 基于Java的电影院在线购票系统设计与实现(附源码论文资料)

    提供:项目源码、项目文档、数据库脚本、软件工具等所有资料 从零开始手把手教学部署运行本系统 该项目附带的源码资料可作为毕设使用 提供技术答疑和远程协助指导,帮助调试并解决后期项目运行问题, 文章底部获取博主联系方式 基于Java的电影院在线购票系统设计与

    2024年02月03日
    浏览(87)
  • 基于微信的电影购票小程序的设计与实现(附源码 论文 配置 讲解)

    摘要: 本文主要探讨了一种基于微信的电影购票小程序的设计与实现。该小程序利用猫眼电影接口API,为用户提供查看正在热映和即将上映的电影信息、查看电影详情、显示附近影院和票价信息,以及选择影院购票等功能。通过该小程序的设计和实现,可以提高用户购买电影

    2024年02月08日
    浏览(39)
  • 基于微信小程序的电影院购票选座小程序设计与实现

    💗博主介绍:✌全网粉丝10W+,CSDN全栈领域优质创作者,博客之星、掘金/华为云/阿里云等平台优质作者。 👇🏻 精彩专栏 推荐订阅👇🏻 计算机毕设精品项目案例(持续更新) 🌟 文末获取源码+数据库+文档 🌟 感兴趣的可以先收藏起来,还有大家在毕设选题,项目以及论文

    2024年02月02日
    浏览(51)
  • 电影院订票选座小程序|基于微信小程序的电影院购票系统设计与实现(源码+数据库+文档)

     电影院订票选座小程序目录 目录 基于微信小程序的电影院购票系统设计与实现  一、前言 二、系统功能设计 三、系统实现 1、管理员功能实现 1、影院信息管理 2、 电影信息管理 2 、用户功能实现 1、影院信息 四、数据库设计 1、实体ER图 五、核心代码   六、论文参考 七

    2024年03月15日
    浏览(115)
  • 基于微信小程序电影院选座购票售票系统设计与实现(PHP+Mysql后台)

     博主介绍 :黄菊华老师《Vue.js入门与商城开发实战》《微信小程序商城开发》图书作者,CSDN博客专家,在线教育专家,CSDN钻石讲师;专注大学生毕业设计教育和辅导。 所有项目都配有从入门到精通的基础知识视频课程,学习后应对毕业设计答辩。 项目配有对应开发文档、

    2024年02月20日
    浏览(53)
  • 基于微信小程序电影院选座购票系统设计与实现 毕业设计论文大纲参考(JSP后台)

     博主介绍 :黄菊华老师《Vue.js入门与商城开发实战》《微信小程序商城开发》图书作者,CSDN博客专家,在线教育专家,CSDN钻石讲师;专注大学生毕业设计教育和辅导。 所有项目都配有从入门到精通的基础知识视频课程,学习后应对毕业设计答辩。 项目配有对应开发文档、

    2024年02月21日
    浏览(50)
  • 基于SSM的电影院购票系统开源啦

    大家好,今天给大家带来一款SSM的电影院售票系统,非常不错的一个项目,学习javaweb编程必备。 下载地址在文末 1.SpringMVC Spring MVC属于SpringFrameWork的后续产品,已经融合在Spring Web Flow 里面。Spring 框架提供了构建 Web 应用程序的全功能 MVC 模块。使用 Spring 可插入的 MVC 架构,

    2024年02月09日
    浏览(49)
  • 基于Spring Boot + Vue的电影购票系统

    基于Spring Boot + Vue的电影购票系统 功能介绍 分为用户端和商家端,商家端只能让拥有商家角色的人登录 商家可以在系统上面注册自己家的影院信息选择影院进去管理,在选择完要进行操作的影院后,可以在系统的电影库选择电影为当前的影院进行电影排期, 电影排期模块有

    2024年03月11日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包