ssm校园快递一站式服务系统源码和论文

news2024/11/25 12:43:26

ssm校园快递一站式服务系统源码和论文076


 开发工具:idea 
 数据库mysql5.7+
 数据库链接工具:navcat,小海豚等
  技术:ssm

选题的目的和意义:

目的:

校园快递一站式服务系统的研究目的有两个,一个为校园及学生提供充足的信息和快捷的查询手段,并提高校园快递管控效率。另一个是检验学习成果,提高自我开发水平。

意义:

随着计算机应用的普及与深入,利用计算机能够对校园快递信息进行统一管理,并进行分析,大大减少管理工作量,提高工作效率,为信息管理带来了极大的方便。校园快递一站式服务系统提供了强大的校园快递信息管理功能,方便管理员对快递信息的添加、修改、删除、查询等基本操作。更好地掌握校园快递的基本信息。该系统能进一步提高管理效率和现代化水平。

研究方向、思路和重点:

本系统以Java开发语言开发,MySQL为后台数据库,采用SSM框架开发。SSM框架集由Spring、SpringMVC、MyBatis三个开源框架整合而成,常作为数据源较简单的web项目的框架。其中spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架。SpringMVC分离了控制器、模型对象、分派器以及处理程序对象的角色,这种分离让它们更容易进行定制。MyBatis是一个支持普通SQL查询,存储过程和高级映射的优秀持久层框架。开发工具是Eclipse。

实现的功能模块主要包括:代取人管理,快递站点管理,待取件管理,快递接单管理,已接单管理等功能。

package com.controller;


import java.text.SimpleDateFormat;
import com.alibaba.fastjson.JSONObject;
import java.util.*;

import com.entity.DaiqurenEntity;
import org.springframework.beans.BeanUtils;
import javax.servlet.http.HttpServletRequest;
import org.springframework.web.context.ContextLoader;
import javax.servlet.ServletContext;
import com.service.TokenService;
import com.utils.StringUtil;
import java.lang.reflect.InvocationTargetException;

import com.service.DictionaryService;
import org.apache.commons.lang3.StringUtils;
import com.annotation.IgnoreAuth;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.mapper.Wrapper;

import com.entity.DaiqurenEntity;

import com.service.DaiqurenService;
import com.entity.view.DaiqurenView;
import com.utils.PageUtils;
import com.utils.R;

/**
 * 
 * 后端接口
 * @author
 * @email
 * @date 2021-03-11
*/
@RestController
@Controller
@RequestMapping("/daiquren")
public class DaiqurenController {
    private static final Logger logger = LoggerFactory.getLogger(DaiqurenController.class);

    @Autowired
    private DaiqurenService daiqurenService;


    @Autowired
    private TokenService tokenService;
    @Autowired
    private DictionaryService dictionaryService;


    //级联表service


    /**
    * 后端列表
    */
    @RequestMapping("/page")
    public R page(@RequestParam Map<String, Object> params, HttpServletRequest request){
        logger.debug("page方法:,,Controller:{},,params:{}",this.getClass().getName(),JSONObject.toJSONString(params));
        String role = String.valueOf(request.getSession().getAttribute("role"));
        if(StringUtil.isNotEmpty(role) && "代取人".equals(role)){
            params.put("yonghuId",request.getSession().getAttribute("userId"));
        }
        PageUtils page = daiqurenService.queryPage(params);

        //字典表数据转换
        List<DaiqurenView> list =(List<DaiqurenView>)page.getList();
        for(DaiqurenView c:list){
            //修改对应字典表字段
            dictionaryService.dictionaryConvert(c);
        }
        return R.ok().put("data", page);
    }
    /**
    * 后端详情
    */
    @RequestMapping("/info/{id}")
    public R info(@PathVariable("id") Long id){
        logger.debug("info方法:,,Controller:{},,id:{}",this.getClass().getName(),id);
        DaiqurenEntity daiquren = daiqurenService.selectById(id);
        if(daiquren !=null){
            //entity转view
            DaiqurenView view = new DaiqurenView();
            BeanUtils.copyProperties( daiquren , view );//把实体数据重构到view中

            //修改对应字典表字段
            dictionaryService.dictionaryConvert(view);
            return R.ok().put("data", view);
        }else {
            return R.error(511,"查不到数据");
        }

    }

    /**
    * 后端保存
    */
    @RequestMapping("/save")
    public R save(@RequestBody DaiqurenEntity daiquren, HttpServletRequest request){
        logger.debug("save方法:,,Controller:{},,daiquren:{}",this.getClass().getName(),daiquren.toString());
        Wrapper<DaiqurenEntity> queryWrapper = new EntityWrapper<DaiqurenEntity>()
            .eq("name", daiquren.getName())
            .eq("username", daiquren.getUsername())
            .eq("password", daiquren.getPassword())
            .eq("sex_types", daiquren.getSexTypes())
            .eq("phone", daiquren.getPhone())
            .eq("role", daiquren.getRole())
            ;
        logger.info("sql语句:"+queryWrapper.getSqlSegment());
        DaiqurenEntity daiqurenEntity = daiqurenService.selectOne(queryWrapper);
        if(daiqurenEntity==null){
            daiquren.setRole("代取人");
            daiqurenService.insert(daiquren);
            return R.ok();
        }else {
            return R.error(511,"表中有相同数据");
        }
    }

    /**
    * 修改
    */
    @RequestMapping("/update")
    public R update(@RequestBody DaiqurenEntity daiquren, HttpServletRequest request){
        logger.debug("update方法:,,Controller:{},,daiquren:{}",this.getClass().getName(),daiquren.toString());
        //根据字段查询是否有相同数据
        Wrapper<DaiqurenEntity> queryWrapper = new EntityWrapper<DaiqurenEntity>()
            .notIn("id",daiquren.getId())
            .eq("name", daiquren.getName())
            .eq("username", daiquren.getUsername())
            .eq("password", daiquren.getPassword())
            .eq("sex_types", daiquren.getSexTypes())
            .eq("phone", daiquren.getPhone())
            .eq("role", daiquren.getRole())
            ;
        logger.info("sql语句:"+queryWrapper.getSqlSegment());
        DaiqurenEntity daiqurenEntity = daiqurenService.selectOne(queryWrapper);
        if("".equals(daiquren.getImgPhoto()) || "null".equals(daiquren.getImgPhoto())){
                daiquren.setImgPhoto(null);
        }
        if(daiqurenEntity==null){
            daiqurenService.updateById(daiquren);//根据id更新
            return R.ok();
        }else {
            return R.error(511,"表中有相同数据");
        }
    }


    /**
    * 删除
    */
    @RequestMapping("/delete")
    public R delete(@RequestBody Integer[] ids){
        logger.debug("delete:,,Controller:{},,ids:{}",this.getClass().getName(),ids.toString());
        daiqurenService.deleteBatchIds(Arrays.asList(ids));
        return R.ok();
    }


    /**
     * 登录
     */
    @IgnoreAuth
    @PostMapping(value = "/login")
    public R login(String username, String password, String role, HttpServletRequest request) {
        DaiqurenEntity yonghu = daiqurenService.selectOne(new EntityWrapper<DaiqurenEntity>().eq("username", username));
        if(yonghu==null || !yonghu.getPassword().equals(password)) {
            return R.error("账号或密码不正确");
        }
        if(!role.equals(yonghu.getRole())){
            return R.error("权限不正确");
        }
        String token = tokenService.generateToken(yonghu.getId(),username, "yonghu", "代取人");
        R r = R.ok();
        r.put("token", token);
        r.put("role","代取人");
        r.put("userId",yonghu.getId());
        return r;
    }

    /**
     * 注册
     */
    @IgnoreAuth
    @PostMapping(value = "/register")
    public R register(@RequestBody DaiqurenEntity yonghu){
        //    	ValidatorUtils.validateEntity(user);
        if(daiqurenService.selectOne(new EntityWrapper<DaiqurenEntity>().eq("username", yonghu.getUsername()).orNew().eq("phone",yonghu.getPhone())) !=null) {
            return R.error("代取人已存在或手机号身份证号已经被使用");
        }
        daiqurenService.insert(yonghu);
        return R.ok();
    }

    /**
     * 获取代取人的session代取人信息
     */
    @RequestMapping("/session")
    public R getCurrYonghu(HttpServletRequest request){
        Integer id = (Integer)request.getSession().getAttribute("userId");
        DaiqurenEntity yonghu = daiqurenService.selectById(id);
        return R.ok().put("data", yonghu);
    }


    /**
     * 退出
     */
    @GetMapping(value = "logout")
    public R logout(HttpServletRequest request) {
        request.getSession().invalidate();
        return R.ok("退出成功");
    }


}

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/939236.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

深度学习怎么学?

推荐这本小白看的《深度学习&#xff1a;从基础到实践&#xff08;上下册&#xff09;》。 深度学习&#xff1a;从基础到实践&#xff08;上下册&#xff09; 深入浅出的讲述了深度学习的基本概念与理论知识&#xff0c;不涉及复杂的数学内容&#xff0c;零基础小白也能轻松掌…

移动硬盘出现两份多个分区并无法使用的情况

文章目录 问题描述解决方案发现问题 问题描述 移动硬盘借给组内同学装Ubuntu之后&#xff0c;出现多个分区&#xff0c;windows10操作系统识别到两个分区并且无法读取&#xff0c;并且出现格式化提醒&#xff0c;但是由于只读属性&#xff0c;而无法格式化的情况。注意这两个分…

【Java 中级】一文精通 Spring MVC - 转发重定向(四)

&#x1f449;博主介绍&#xff1a; 博主从事应用安全和大数据领域&#xff0c;有8年研发经验&#xff0c;5年面试官经验&#xff0c;Java技术专家&#xff0c;WEB架构师&#xff0c;阿里云专家博主&#xff0c;华为云云享专家&#xff0c;51CTO 专家博主 ⛪️ 个人社区&#x…

【Mybatis】MybatisPlus轻松实现数据动态可配置热脱敏

文章目录 前言一、数据1.1、mybatis-plus 统一字段管理1.2、Map 映射如何实现字段自动填充1.3、数据权限1.4、TenantLineInnerInterceptor 的升级改造1.5、TenantLineInnerInterceptor 改造 21.6、数据权限改造 3 二、数据脱敏三、TypeHander总结 前言 网站开发功能是否全面是…

【Java 中级】一文精通 Spring MVC - 标签库 (八)

&#x1f449;博主介绍&#xff1a; 博主从事应用安全和大数据领域&#xff0c;有8年研发经验&#xff0c;5年面试官经验&#xff0c;Java技术专家&#xff0c;WEB架构师&#xff0c;阿里云专家博主&#xff0c;华为云云享专家&#xff0c;51CTO 专家博主 ⛪️ 个人社区&#x…

【JAVA基础——static关键字】

JAVA基础 static关键字 文章目录 JAVA基础概述静态成员与加载顺序 概述 static 变量&#xff1a;static变量由该类的所有对象共享&#xff0c;不需要创建对象也可使用。static 方法&#xff1a;允许直接访问&#xff0c;不需要创建对象也可被调用。如 main 方法。static 初始…

华为OD机试 - 求字符串中所有整数的最小和 - 逻辑分析(Java 2023 B卷 100分)

目录 专栏导读一、题目描述二、输入描述三、输出描述四、解题思路五、Java算法源码六、效果展示1、输入2、输出3、说明 华为OD机试 2023B卷题库疯狂收录中&#xff0c;刷题点这里 专栏导读 本专栏收录于《华为OD机试&#xff08;JAVA&#xff09;真题&#xff08;A卷B卷&#…

一个免费好用的全域数据集成平台

文章目录 全域数据集成平台RestCloud一、产品架构一、数据源管理二、离线数据集成三、实时数据集成四、监控中心五、对比总结六、离线数据集成实战1.新建mysql数据源2.离线数据集成3.执行同步数据 大家好&#xff0c;我是脚丫先生 (o^^o) 小伙伴们都知道&#xff0c;在之前数据…

无涯教程-机器学习 - 矩阵图函数

相关性是有关两个变量之间变化的指示&#xff0c;在前面的章节中&#xff0c;无涯教程讨论了Pearson的相关系数以及相关的重要性&#xff0c;可以绘制相关矩阵以显示哪个变量相对于另一个变量具有较高或较低的相关性。 在以下示例中&#xff0c;Python脚本将为Pima印度糖尿病数…

VMware虚拟机的安装以及安装CentOS系统

VMware虚拟机是一款非常受欢迎的虚拟化软件&#xff0c;它可以模拟一台计算机运行在另一台计算机上&#xff0c;从而实现在一台物理机器上运行多个虚拟机的目的。在本文中&#xff0c;我们将会介绍如何安装VMware虚拟机并在其中安装CentOS操作系统。 文章目录 &#x1f4c0;VMw…

Linux用户与组管理(03)(八)

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 目录 前言 一、组管理 1、概述 2、用户信息查看 总结 前言 今天是学习用户与组管理的最后一节课&#xff0c;这节课主要是组管理的内容&#xff0c;希望能一起学习&#xff…

跨足多领域:人脸美颜SDK在医疗、娱乐和安全中的应用案例

随着科技的不断发展&#xff0c;人脸美颜技术不再局限于满足用户的审美需求&#xff0c;而是在医疗、娱乐和安全领域展现出了广泛的应用前景。本文将深入探讨人脸美颜SDK 在这三个领域中的创新应用案例&#xff0c;展示其在不同场景中的独特价值和潜力。 一、医疗领域 1、皮…

Leetcode86. 分隔链表

给你一个链表的头节点 head 和一个特定值 x &#xff0c;请你对链表进行分隔&#xff0c;使得所有 小于 x 的节点都出现在 大于或等于 x 的节点之前。 你应当 保留 两个分区中每个节点的初始相对位置。 力扣&#xff08;LeetCode&#xff09;官网 - 全球极客挚爱的技术成长平台…

2.3 【MySQL】命令行和配置文件中启动选项的区别

在命令行上指定的绝大部分启动选项都可以放到配置文件中&#xff0c;但是有一些选项是专门为命令行设计的&#xff0c;比方说defaults-extra-file 、 defaults-file 这样的选项本身就是为了指定配置文件路径的&#xff0c;再放在配置文件中使用就没啥意义了。 如果同一个启动选…

winpe还原windows系统备份

准备工作 用大白菜制作一个启动u盘&#xff0c;里面可以镜系统备份文件 插入电脑&#xff0c;启动&#xff0c;按f11&#xff08;这个快捷键因电脑而异&#xff09;&#xff0c;选择启动u盘&#xff0c;进入winpe 硬盘格式化 选择分区助手软件 选择硬盘&#xff0c;右键选择【…

Spring Bean对象生命周期

文章目录 前言基础通俗理解bean作用域 前言 最近学习spring的一些基础概念&#xff0c;所以就先了解了bean对象的概念&#xff0c;而且发现这个里面涉及到很多的内容&#xff0c;比如在spring中一个bean对象是如何创建以及销毁的这些概念&#xff0c;所以就打算总结一些spring…

Spring MVC 学习总结

学习目标 了解 Spring MVC 是什么&#xff0c;为什么要使用它或者说它能解决什么问题&#xff0c;其与 Spring 是什么关系。理解为什么配置 Spring MVC 的前端控制器的映射路径为 “/” 会导致静态资源访问不了&#xff0c;掌握怎么处理这个问题。掌握基于注解方式使用 Spring…

分享一个vue-slot插槽使用场景

需求再现 <el-table-column align"center" label"状态" prop"mitStatus" show-overflow-tooltip />在这里&#xff0c;我想对于状态进行一个三目判断&#xff0c;如果为0那就是进行中&#xff0c;否则就是已完成&#xff0c;期初我是这样写…

九大常见数据结构

常用的数据结构可根据数据访问的特点分为线性结构和非线性结构。线性结构包括常见的链表、栈、队列等&#xff0c;非线性结构包括树、图等。 1 数组 数组可以说是最基本最常见的数据结构。数组一般用来存储相同类型的数据&#xff0c;可通过数组名和下标进行数据的访问和更新。…

self instruct 技术

《SELF-INSTRUCT: Aligning Language Model with Self Generated Instructions》 github: self-instruct 背景 大模型表现惊人&#xff0c;但是严重依赖于人工编写的指令数据。本文中提出self-instruct框架&#xff1a;一种基于大模型自动生成指令数据的方法。 主要步骤 1. …