首页 > 数据库 >基于SpringBoot的“乐校园二手书交易管理系统”的设计与实现(源码+数据库+文档+PPT)

基于SpringBoot的“乐校园二手书交易管理系统”的设计与实现(源码+数据库+文档+PPT)

时间:2024-03-18 11:29:44浏览次数:22  
标签:return SpringBoot 二手书 MaijiayonghuEntity 源码 new maijiayonghu maijiayonghuService

基于SpringBoot的“乐校园二手书交易管理系统”的设计与实现(源码+数据库+文档+PPT)

  • 开发语言:Java

  • 数据库:MySQL

  • 技术:SpringBoot

  • 工具:IDEA/Ecilpse、Navicat、Maven


系统展示


系统首页界面图


用户注册界面图


二手图书界面图


留言反馈界面图


个人中心界面图


管理员功能界面图


图书分类管理界面图

摘要

在Internet高速发展的今天,我们生活的各个领域都涉及到计算机的应用,其中包括乐校园二手书交易管理系统的网络应用,在外国二手书交易管理系统已经是很普遍的方式,不过国内的管理系统可能还处于起步阶段。乐校园二手书交易管理系统具有二手书交易管理功能的选择。乐校园二手书交易管理系统采用java技术,基于springboot框架,mysql数据库进行开发,实现了首页、个人中心、用户管理、卖家用户管理、图书分类管理、二手图书管理、求购图书管理、求购回复管理、留言反馈、系统管理、订单管理等内容进行管理,本系统具有良好的兼容性和适应性,为用户提供更多的乐校园二手书交易信息,也提供了良好的平台,从而提高系统的核心竞争力。

课题背景与意义

在Internet高速发展的今天,计算机的应用几乎完全覆盖我们生活的各个领域,互联网在经济,生活等方面有着举足轻重的地位,成为人们资源共享,信息快速传递的重要渠道。在中国,网上管理的兴起也同时飞速发展着。为了适应现代人类强烈的时间观念,对于乐校园二手书交易传统管理方式的缺点,互联网的出现打破了这种局限性,给了广大用户更大的选择空间,促进了乐校园二手书交易管理系统,有效的避免了乐校园二手书交易管理缭乱的局面,方便用户。本系统中,管理员以最方便的形式,在最短的时间内查找最多的二手书交易信息。因此,系统无疑给人们的生活带来了极大的方便,网络的应用让时间和距离不再是局限。

课题研究现状

现今,越来越多的人乐于选择一项合适的管理方案,但是普通用户往往受到管理经验地限制,这时二手书交易系统的崛起,大量二手书交易制度进入人们生活,而乐校园二手书交易管理系统无疑是乐校园二手书交易管理的最好制度,在这样成功的管理模式背景下,乐校园二手书交易信息的增多,乐校园二手书交易管理成为了一个难题。高效便捷地乐校园二手书交易管理系统成为了转变管理模式,与时代兼容的当务之急。

乐校园二手书交易管理系统,为用户随时随地查看乐校园二手书交易信息提供了便捷的方法,更重要的是大大的简化了管理员管理的方式方法,更提供了其他想要了解乐校园二手书交易信息及运作情况以及挑选方便快捷的可靠渠道。相比于传统乐校园二手书交易管理方法,这样的电子信息管理更为简洁方便,在乐校园二手书交易管理系统维护信息反馈和处理乐校园二手书交易信息意见方面也有得天独厚的优势。

部分源码

/**
 * 卖家用户
 * 后端接口
 * @author 
 * @email 
 * @date 
 */
@RestController
@RequestMapping("/maijiayonghu")
public class MaijiayonghuController {
    @Autowired
    private MaijiayonghuService maijiayonghuService;


    
	@Autowired
	private TokenService tokenService;
	
	/**
	 * 登录
	 */
	@IgnoreAuth
	@RequestMapping(value = "/login")
	public R login(String username, String password, String captcha, HttpServletRequest request) {
		MaijiayonghuEntity user = maijiayonghuService.selectOne(new EntityWrapper<MaijiayonghuEntity>().eq("maijiazhanghao", username));
		if(user==null || !user.getMima().equals(password)) {
			return R.error("账号或密码不正确");
		}
		
		String token = tokenService.generateToken(user.getId(), username,"maijiayonghu",  "卖家用户" );
		return R.ok().put("token", token);
	}
	
	/**
     * 注册
     */
	@IgnoreAuth
    @RequestMapping("/register")
    public R register(@RequestBody MaijiayonghuEntity maijiayonghu){
    	//ValidatorUtils.validateEntity(maijiayonghu);
    	MaijiayonghuEntity user = maijiayonghuService.selectOne(new EntityWrapper<MaijiayonghuEntity>().eq("maijiazhanghao", maijiayonghu.getMaijiazhanghao()));
		if(user!=null) {
			return R.error("注册用户已存在");
		}
		Long uId = new Date().getTime();
		maijiayonghu.setId(uId);
        maijiayonghuService.insert(maijiayonghu);
        return R.ok();
    }

	
	/**
	 * 退出
	 */
	@RequestMapping("/logout")
	public R logout(HttpServletRequest request) {
		request.getSession().invalidate();
		return R.ok("退出成功");
	}
	
	/**
     * 获取用户的session用户信息
     */
    @RequestMapping("/session")
    public R getCurrUser(HttpServletRequest request){
    	Long id = (Long)request.getSession().getAttribute("userId");
        MaijiayonghuEntity user = maijiayonghuService.selectById(id);
        return R.ok().put("data", user);
    }
    
    /**
     * 密码重置
     */
    @IgnoreAuth
	@RequestMapping(value = "/resetPass")
    public R resetPass(String username, HttpServletRequest request){
    	MaijiayonghuEntity user = maijiayonghuService.selectOne(new EntityWrapper<MaijiayonghuEntity>().eq("maijiazhanghao", username));
    	if(user==null) {
    		return R.error("账号不存在");
    	}
        user.setMima("123456");
        maijiayonghuService.updateById(user);
        return R.ok("密码已重置为:123456");
    }


    /**
     * 后端列表
     */
    @RequestMapping("/page")
    public R page(@RequestParam Map<String, Object> params,MaijiayonghuEntity maijiayonghu,
		HttpServletRequest request){
        EntityWrapper<MaijiayonghuEntity> ew = new EntityWrapper<MaijiayonghuEntity>();
		PageUtils page = maijiayonghuService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, maijiayonghu), params), params));

        return R.ok().put("data", page);
    }
    
    /**
     * 前端列表
     */
	@IgnoreAuth
    @RequestMapping("/list")
    public R list(@RequestParam Map<String, Object> params,MaijiayonghuEntity maijiayonghu, 
		HttpServletRequest request){
        EntityWrapper<MaijiayonghuEntity> ew = new EntityWrapper<MaijiayonghuEntity>();
		PageUtils page = maijiayonghuService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, maijiayonghu), params), params));
        return R.ok().put("data", page);
    }

	/**
     * 列表
     */
    @RequestMapping("/lists")
    public R list( MaijiayonghuEntity maijiayonghu){
       	EntityWrapper<MaijiayonghuEntity> ew = new EntityWrapper<MaijiayonghuEntity>();
      	ew.allEq(MPUtil.allEQMapPre( maijiayonghu, "maijiayonghu")); 
        return R.ok().put("data", maijiayonghuService.selectListView(ew));
    }

	 /**
     * 查询
     */
    @RequestMapping("/query")
    public R query(MaijiayonghuEntity maijiayonghu){
        EntityWrapper< MaijiayonghuEntity> ew = new EntityWrapper< MaijiayonghuEntity>();
 		ew.allEq(MPUtil.allEQMapPre( maijiayonghu, "maijiayonghu")); 
		MaijiayonghuView maijiayonghuView =  maijiayonghuService.selectView(ew);
		return R.ok("查询卖家用户成功").put("data", maijiayonghuView);
    }
	
    /**
     * 后端详情
     */
    @RequestMapping("/info/{id}")
    public R info(@PathVariable("id") Long id){
        MaijiayonghuEntity maijiayonghu = maijiayonghuService.selectById(id);
        return R.ok().put("data", maijiayonghu);
    }

    /**
     * 前端详情
     */
	@IgnoreAuth
    @RequestMapping("/detail/{id}")
    public R detail(@PathVariable("id") Long id){
        MaijiayonghuEntity maijiayonghu = maijiayonghuService.selectById(id);
        return R.ok().put("data", maijiayonghu);
    }
    



    /**
     * 后端保存
     */
    @RequestMapping("/save")
    public R save(@RequestBody MaijiayonghuEntity maijiayonghu, HttpServletRequest request){
    	maijiayonghu.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
    	//ValidatorUtils.validateEntity(maijiayonghu);
    	MaijiayonghuEntity user = maijiayonghuService.selectOne(new EntityWrapper<MaijiayonghuEntity>().eq("maijiazhanghao", maijiayonghu.getMaijiazhanghao()));
		if(user!=null) {
			return R.error("用户已存在");
		}
		maijiayonghu.setId(new Date().getTime());
        maijiayonghuService.insert(maijiayonghu);
        return R.ok();
    }
    
    /**
     * 前端保存
     */
    @RequestMapping("/add")
    public R add(@RequestBody MaijiayonghuEntity maijiayonghu, HttpServletRequest request){
    	maijiayonghu.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
    	//ValidatorUtils.validateEntity(maijiayonghu);
    	MaijiayonghuEntity user = maijiayonghuService.selectOne(new EntityWrapper<MaijiayonghuEntity>().eq("maijiazhanghao", maijiayonghu.getMaijiazhanghao()));
		if(user!=null) {
			return R.error("用户已存在");
		}
		maijiayonghu.setId(new Date().getTime());
        maijiayonghuService.insert(maijiayonghu);
        return R.ok();
    }

    /**
     * 修改
     */
    @RequestMapping("/update")
    @Transactional
    public R update(@RequestBody MaijiayonghuEntity maijiayonghu, HttpServletRequest request){
        //ValidatorUtils.validateEntity(maijiayonghu);
        maijiayonghuService.updateById(maijiayonghu);//全部更新
        return R.ok();
    }
    

    /**
     * 删除
     */
    @RequestMapping("/delete")
    public R delete(@RequestBody Long[] ids){
        maijiayonghuService.deleteBatchIds(Arrays.asList(ids));
        return R.ok();
    }
    
    /**
     * 提醒接口
     */
	@RequestMapping("/remind/{columnName}/{type}")
	public R remindCount(@PathVariable("columnName") String columnName, HttpServletRequest request, 
						 @PathVariable("type") String type,@RequestParam Map<String, Object> map) {
		map.put("column", columnName);
		map.put("type", type);
		
		if(type.equals("2")) {
			SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
			Calendar c = Calendar.getInstance();
			Date remindStartDate = null;
			Date remindEndDate = null;
			if(map.get("remindstart")!=null) {
				Integer remindStart = Integer.parseInt(map.get("remindstart").toString());
				c.setTime(new Date()); 
				c.add(Calendar.DAY_OF_MONTH,remindStart);
				remindStartDate = c.getTime();
				map.put("remindstart", sdf.format(remindStartDate));
			}
			if(map.get("remindend")!=null) {
				Integer remindEnd = Integer.parseInt(map.get("remindend").toString());
				c.setTime(new Date());
				c.add(Calendar.DAY_OF_MONTH,remindEnd);
				remindEndDate = c.getTime();
				map.put("remindend", sdf.format(remindEndDate));
			}
		}
		
		Wrapper<MaijiayonghuEntity> wrapper = new EntityWrapper<MaijiayonghuEntity>();
		if(map.get("remindstart")!=null) {
			wrapper.ge(columnName, map.get("remindstart"));
		}
		if(map.get("remindend")!=null) {
			wrapper.le(columnName, map.get("remindend"));
		}


		int count = maijiayonghuService.selectCount(wrapper);
		return R.ok().put("count", count);
	}
	

}

结论

通过完成该乐校园二手书交易管理系统和本论文的撰写让我更加明白了软件开发过程中软件工程思想的重要性。在项目的前期由于对需求分析做的不够谨慎和明确,导致了后面在设计甚至编码时候造成了许多不必要的麻烦。由此在今后的学习和工作开发之中必须要牢牢把握住软件工程的设计思想和方法,这样可以进一步保证项目开发的健壮性和准确性。

标签:return,SpringBoot,二手书,MaijiayonghuEntity,源码,new,maijiayonghu,maijiayonghuService
From: https://blog.csdn.net/weixin_47702700/article/details/136804212

相关文章

  • 基于SpringBoot的“书籍学习平台”的设计与实现(源码+数据库+文档+PPT)
    基于SpringBoot的“书籍学习平台”的设计与实现(源码+数据库+文档+PPT)开发语言:Java数据库:MySQL技术:SpringBoot工具:IDEA/Ecilpse、Navicat、Maven系统展示平台首页界面图用户注册界面图付费专区界面图个人中心界面图后台登录界面图管理员功能界面图......
  • 基于Java的厦门旅游电子商务预订系统(Vue.js+SpringBoot)
    目录一、摘要1.1项目介绍1.2项目录屏二、功能模块2.1景点类型模块2.2景点档案模块2.3酒店管理模块2.4美食管理模块三、系统设计3.1用例设计3.2数据库设计3.2.1学生表3.2.2学生表3.2.3学生表3.2.4学生表四、系统展示五、核心代码5.1新增景点类型5.2查......
  • 基于微信小程序的高校跑腿小程序,附源码
    博主介绍:✌程序员徐师兄、7年大厂程序员经历。全网粉丝15w+、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、Python技术领域和毕业项目实战✌......
  • Swoole 源码分析之 WebSocket 模块
    首发原文链接:Swoole源码分析之WebSocket模块大家好,我是码农先森。Swoole源码分析之WebSocket模块引言WebSocket是一种在单个TCP连接上进行全双工通信的协议。它允许客户端和服务器之间进行实时数据传输。与传统的HTTP请求-响应模型不同,WebSocket可以保持双向通信......
  • springboot3使用validation进行参数验证
    前言  今天学习了使用validation整合springboot进行字段的校验,体验下来感觉很不错,有了validation可以省下一大堆控制器里面的数据校验,例如前端发送了一个请求到我们后端,请求中包含的数据字段一般情况下都是通过前端校验过的然后发送到后端进行处理,但是考虑到整体后端代码的可靠......
  • 最详细的Keycloak教程(建议收藏):Keycloak实现手机号、验证码登陆——(三)基于springboot&k
    在前面两节分别介绍了Keycloak的下载与使用和keycloak与springboot的集成。接下来第三节让我们一步步的去完成一个简单的前后端分离项目,并且可以扩展实现sso。一、简介本文将介绍如何使用SpringBoot、Keycloak和Vue构建一个具有前后端分离架构的Web应用程序。通过将前......
  • SpringBoot拦截器
    目录拦截器概念拦截器的作用应用场景SpringBoot中的拦截器实现实现HandlerInterceptor接口注册拦截器到InterceptorRegistry配置拦截器的拦截规则拦截器的执行顺序和生命周期拦截器的执行顺序拦截器的生命周期多个拦截器的执行流程拦截器的性能优化和常见问题拦截器的常见问题和解......
  • 【前端素材】推荐优质电影票购票商城网站设计Ticket平台模板(附源码)
     一、需求分析1、功能分析在线电影票购票商城是指一个通过互联网提供电影票购买服务的平台。它通常包括以下功能:电影信息展示:商城会展示当前热映电影、即将上映电影和影片详情,包括电影名称、演员阵容、导演、剧情简介、上映时间等信息,帮助用户选择电影。影院选择和座位......
  • 【前端素材】推荐优质在线创意家居电商网站设计Umbra平台模板(附源码)
    一、需求分析1、功能分析在线家具装饰商城是指通过互联网平台提供家具和装饰产品购买服务的电子商务平台。以下是关于在线家具装饰商城的具体功能和特点的详细分析:产品展示和购买:在线家具装饰商城通过网站或应用程序展示各种家具和装饰产品的图片、描述、价格等信息,方便用......
  • LinkedList源码解析和设计思路
    一、继承体系LinkedList类位于java.util包中,它实现了List接口和Deque接口,LinkedList可以被当做链表、双端队列使用,并且继承自AbstractSequentialList类。在继承关系中,它的父类是AbstractSequentialList,而AbstractSequentialList又继承自AbstractList,AbstractList继承自Abs......