基于SpringBoot+微信小程序汽车服务系统的设计与实现

news2024/11/28 3:39:59

早晨四点起来,开发个基于SpringBoot+微信小程序汽车服务系统。

困死我了。

送完孩子,然后去上班。

昨天有个读者朋友问小孟:程序员之间的差距为何如此之大。

有时候甚至在同一所大学,同一个专业,有的学生大四毕业可以拿到四五十w的年薪,有的学生毕业找不到工作。

甚至挂科、重修,延期一年毕业![流泪]

现实就是这样,差距大的让人惊叹!究竟是什么原因造成了这样??

我读本科的时候,大三时候我已经作为队长获得软件大赛一等奖,而有的同学才开始学习编程,研一下的时候,很多同学刚开始准备开题,而我已经接了很多的外包项目。

因为我一直在认清现状、反思、规划。

包括后来,有公司给我高薪、高职位,我依然认清现状。程序员这个行业很特殊。

一 视频演示界面图

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

二 核心代码

/**
源码或者开发,都可以找小孟V:codingxm
*/
@RestController
public class AccountController {

    @Resource
    private UserInfoService userInfoService;

    @GetMapping("/logout")
    public Result logout(HttpServletRequest request) {
        request.getSession().setAttribute("user", null);
        return Result.success();
    }

    @GetMapping("/auth")
    public Result getAuth(HttpServletRequest request) {
        Object user = request.getSession().getAttribute("user");
        if(user == null) {
            return Result.error("401", "未登录");
        }
        return Result.success((UserInfo)user);
    }

    /**
     * 注册
     */
    @PostMapping("/register")
    public Result<UserInfo> register(@RequestBody UserInfo userInfo, HttpServletRequest request) {
        if (StrUtil.isBlank(userInfo.getName()) || StrUtil.isBlank(userInfo.getPassword())) {
            throw new CustomException(ResultCode.PARAM_ERROR);
        }
        UserInfo register = userInfoService.add(userInfo);
        HttpSession session = request.getSession();
        session.setAttribute("user", register);
        session.setMaxInactiveInterval(120 * 60);
        return Result.success(register);
    }

    /**
     * 登录
     */
    @PostMapping("/login")
    public Result<UserInfo> login(@RequestBody UserInfo userInfo, HttpServletRequest request) {
        if (StrUtil.isBlank(userInfo.getName()) || StrUtil.isBlank(userInfo.getPassword())) {
            throw new CustomException(ResultCode.USER_ACCOUNT_ERROR);
        }
        UserInfo login = userInfoService.login(userInfo.getName(), userInfo.getPassword());
        HttpSession session = request.getSession();
        session.setAttribute("user", login);
        session.setMaxInactiveInterval(120 * 60);
        return Result.success(login);
    }

    /**
     * 重置密码为123456
     */
    @PutMapping("/resetPassword")
    public Result<UserInfo> resetPassword(@RequestParam String username) {
        return Result.success(userInfoService.resetPassword(username));
    }

    @PutMapping("/updatePassword")
    public Result updatePassword(@RequestBody UserInfo info, HttpServletRequest request) {
        UserInfo account = (UserInfo) request.getSession().getAttribute("user");
        if (account == null) {
            return Result.error(ResultCode.USER_NOT_EXIST_ERROR.code, ResultCode.USER_NOT_EXIST_ERROR.msg);
        }
        String oldPassword = SecureUtil.md5(info.getPassword());
        if (!oldPassword.equals(account.getPassword())) {
            return Result.error(ResultCode.PARAM_PASSWORD_ERROR.code, ResultCode.PARAM_PASSWORD_ERROR.msg);
        }
        account.setPassword(SecureUtil.md5(info.getNewPassword()));
        userInfoService.update(account);

        // 清空session,让用户重新登录
        request.getSession().setAttribute("user", null);
        return Result.success();
    }

@RestController
@RequestMapping(value = "/addressInfo")
public class AddressInfoController {
    @Resource
    private AddressInfoService addressInfoService;

    @PostMapping
    public Result<AddressInfo> add(@RequestBody AddressInfo addressInfo, HttpServletRequest request) {
        addressInfoService.add(addressInfo);
        return Result.success(addressInfo);
    }

    @DeleteMapping("/{id}")
    public Result delete(@PathVariable Long id) {
        addressInfoService.delete(id);
        return Result.success();
    }

    @PutMapping
    public Result update(@RequestBody AddressInfo addressInfo) {
        addressInfoService.update(addressInfo);
        return Result.success();
    }

    @GetMapping("/{id}")
    public Result<AddressInfo> detail(@PathVariable Long id) {
        AddressInfo addressInfo = addressInfoService.findById(id);
        return Result.success(addressInfo);
    }

    @GetMapping
    public Result<List<AddressInfo>> all() {
        return Result.success(addressInfoService.findAll());
    }

    @GetMapping("/all/{userId}")
    public Result<List<AddressInfo>> all(@PathVariable Long userId) {
        return Result.success(addressInfoService.findAll(userId));
    }

    @GetMapping("/page/{name}")
    public Result<PageInfo<AddressInfo>> page(@RequestParam(defaultValue = "1") Integer pageNum,
                                              @RequestParam(defaultValue = "10") Integer pageSize,
                                              @PathVariable String name) {
        return Result.success(addressInfoService.findPage( name, pageSize, pageNum));
    }
@RestController
@RequestMapping(value = "/advertiserInfo")
public class AdvertiserInfoController {
    @Resource
    private AdvertiserInfoService advertiserInfoService;

    @PostMapping
    public Result<AdvertiserInfo> add(@RequestBody AdvertiserInfo advertiserInfo) {
        advertiserInfoService.add(advertiserInfo);
        return Result.success(advertiserInfo);
    }

    @DeleteMapping("/{id}")
    public Result delete(@PathVariable Long id) {
        advertiserInfoService.delete(id);
        return Result.success();
    }

    @PutMapping
    public Result update(@RequestBody AdvertiserInfo advertiserInfo) {
        advertiserInfoService.update(advertiserInfo);
        return Result.success();
    }

    @GetMapping("/{id}")
    public Result<AdvertiserInfo> detail(@PathVariable Long id) {
        AdvertiserInfo advertiserInfo = advertiserInfoService.findById(id);
        return Result.success(advertiserInfo);
    }

    @GetMapping
    public Result<List<AdvertiserInfo>> all() {
        return Result.success(advertiserInfoService.findAll());
    }

    @GetMapping("/page/{name}")
    public Result<PageInfo<AdvertiserInfo>> page(@PathVariable String name,
                                                   @RequestParam(defaultValue = "1") Integer pageNum,
                                                   @RequestParam(defaultValue = "5") Integer pageSize,
                                                   HttpServletRequest request) {
        return Result.success(advertiserInfoService.findPage(name, pageNum, pageSize, request));
    }
}

我是程序员小孟,如果觉得系统不错,欢迎点赞关注。非常感谢!

点击下面可以联系我。

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

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

相关文章

Linux中的Rust支持步入成熟,得到业界巨头的大力支持

导读Rust在Linux中的支持正在逐步走向成熟&#xff0c;并且得到了思科、三星和Canonical等业界巨头的积极支持。尽管Rust不可能完全取代C语言在Linux内核中的地位&#xff0c;但其必将成为Linux开发的重要语言。 Rust语言的安全性和性能优势为其在Linux开发中的应用打开了大门…

Jupyter Markdown 插入图片

首先截图 注意 这一步是关键的&#xff01;&#xff01; 它需要使用电脑自带的截图&#xff0c;用qq啊vx啊美图秀秀那些都不行哦。 截图之后复制&#xff1a; 然后快捷键粘贴到jupyter里面&#xff0c;它会生成一段代码&#xff08;没有代码就是说截图形式不对&#xff09;&a…

如何在数字营销中增强客户体验和参与度

不久前&#xff0c;许多人还把身临其境技术与科幻小说联系在一起&#xff0c;而最近&#xff0c;这种技术又与游戏联系在了一起。如今&#xff0c;许多组织都认识到了采用增强现实和虚拟现实技术改善运营的优势。增强现实&#xff08;AR&#xff09;和虚拟现实&#xff08;VR&a…

MySQL系列 - 数据类型

MySQL是一种常用的关系型数据库管理系统&#xff0c;它支持多种数据类型&#xff0c;包括整数、浮点数、字符串、日期和时间等。在本文中&#xff0c;我们将介绍MySQL中常用的数据类型及其用法。 MySQL数据类型介绍&#xff1a; 1、整数类型&#xff1a; MySQL提供了多种整数…

【面试心经】——上海广升智能科技有限公司

介绍 本文记录的是2018.5月份应聘上海广升linux 开发岗位的经历。 福利待遇&#xff1a; BOSS 岗位薪资&#xff1a;15K ~25K。 每月一天带薪病假或事假。 国家规定外有额外4天年假。 每年两次旅游&#xff0c;上半年国外&#xff0c;下半年国内。 每年两次调薪机会&…

南大通用 GBase 8s数据库级别权限

对于所有有权使用指定数据库的用户都必须赋予其数据库级别的用户权限。在GBase 8s 中&#xff0c;数据库级别的用户权限有三种&#xff0c;按权限从低到高排列依次为&#xff1a;CONNECT、RESOURCE、DBA。 1. CONNECT 这是级别最低的一种数据库级别用户权限。拥有该权限的用户…

H3C堆叠和聚合配置

因ensp做不了堆叠&#xff0c;所以用了华三的模拟器HCL&#xff0c;下载地址&#xff1a;H3C网络设备模拟器官方免费下载-新华三集团-H3C 拓朴如下&#xff1a; 1、堆叠配置步骤如下&#xff1a; 1、S1和S2配置堆叠过程&#xff1a; [S1] irf domain 1 irf member 1 priority …

人工智能驱动的医疗辅助:陪诊系统的技术原理与应用

随着人工智能技术的不断发展&#xff0c;医疗领域也迎来了新的可能性。本文将深入探讨陪诊系统的技术原理及其在医疗领域中的应用。我们将重点关注人工智能的核心概念&#xff0c;如自然语言处理、机器学习和语音识别&#xff0c;以解释陪诊系统是如何在医疗环境中发挥作用的。…

2023年03月 Scratch图形化(四级)真题解析#中国电子学会#全国青少年软件编程等级考试

Scratch等级考试(1~4级)全部真题・点这里 一、单选题(共10题,每题2分,共30分) 第1题 编写一段程序,从26个英文字母中,随机选出10个加入列表a。空白处应填入的代码是?( ) A: B: C: D:

基础课13——知识库

1.知识库的概念、特点与功能 智能客服中的知识库是一个以知识为基础的系统&#xff0c;可以明确地表达与实际问题相对应的知识&#xff0c;并构成相对独立的程序行为主体&#xff0c;有利于有效、准确地解决实际问题。它储存着机器人对所有信息的认知概念和理解&#xff0c;这…

数据预处理:随机裁剪放缩

随机裁剪放缩是一种数据增强技术&#xff0c;可以在训练神经网络时增加数据的多样性&#xff0c;提高模型的泛化能力。具体来说&#xff0c;随机裁剪放缩可以通过随机裁剪和缩放原始图片来生成多个不同的训练样本&#xff0c;从而增加数据集的大小和多样性。这种技术在图像分类…

Python编程基础:数据类型和运算符解析

想要学习Python编程语言&#xff1f;本文将为您介绍Python中常见的数据类型和运算符&#xff0c;为您打下坚实的编程基础。了解不同的数据类型和运算符&#xff0c;掌握它们之间的配合方式&#xff0c;让您能够更轻松地进行数据处理和计算任务。无论您是初学者还是有一定经验的…

昨日一题 1670. 设计前中后队列(中等,列表)

维护左右两个队列&#xff0c;控制左队列的长度比右队列长&#xff0c;且不超过1pushFront 往左队列的左边添加元素pushMiddle 往左队列的右边或者右队列的左边添加元素其余同理&#xff0c;可以参照代码 class FrontMiddleBackQueue:def __init__(self):self.llist, self.rli…

博客RESTful API 接口开发

目录 1.博客系统规划 2.基础服务搭建 3.登录接口 4.新增文章接口 5.查询文章接口 6.修改文章接口 7.删除文章接口 总结 1.博客系统规划 首先规划一下有哪些接口&#xff0c;从博客文章角度来看&#xff0c;需要如下接口&#xff1a; 新增文章接口&#xff0c;传递…

Windows下搭建Tomcat HTTP服务,发布公网远程访问

文章目录 前言1.本地Tomcat网页搭建1.1 Tomcat安装1.2 配置环境变量1.3 环境配置1.4 Tomcat运行测试1.5 Cpolar安装和注册 2.本地网页发布2.1.Cpolar云端设置2.2 Cpolar本地设置 3.公网访问测试4.结语 前言 Tomcat作为一个轻量级的服务器&#xff0c;不仅名字很有趣&#xff0…

第二证券:五日线是什么颜色的线?

从概念解说上来看&#xff0c;五日线是一种短期移动平均线&#xff0c;通常使用股票五日收盘价的平均值进行核算&#xff0c;然后描绘出股票短线的走势趋势。在技能图上&#xff0c;五日线通常以赤色或蓝色表示&#xff0c;不同的平台能够设定不同的色彩。 在实践应用过程中&a…

海康运行管理中心 RCE漏洞复现

0x01 产品简介 海康威视是以视频为核心的智能物联网解决方案和大数据服务提供商。海康运行管理中心是一款功能强大、易于使用的安防管理平台&#xff0c;能满足用户对视频监控、报警管理、设备配置和数据统计等方面的需求&#xff0c;帮助用户建立高效、智能的安防系统。 0x02…

前端算法专栏-数组-75.颜色分类

介绍 Hi 大家好。我是程序员库里&#xff0c;今天新开一个前端算法专栏。 接下来会分类给大家分享常考算法题目。 很多朋友也是看着这套系列算法拿到很多offer&#xff01;所以也是想分享给更多朋友&#xff0c;帮助到有需要的朋友。 分类 数组-三路快排 题目 75. 颜色分…

20-多线程

20.1线程简介 世间有很多工作都是可以同时完成的。例如&#xff0c;人体可以同时进行呼吸、血液循环、思考问题等活用户既可以使用计算机听歌&#xff0c;也可以使用它打印文件。同样&#xff0c;计算机完全可以将多种活动同时进这种思想放在 Java 中被称为并发&#xff0c;而…

JAVA基础进阶(八)

一、Map的体系结构 单列集合的顶层接口是Collection接口,双列集合的顶层接口是Map接口。 双列集合的元素是成对出现的&#xff0c;每一个元素称之为一个键值对。 二、Map系列集合的特点 Map系列集合的特点有以下几点: 键不能重复、值可以重复每一个元素都是一个键值对HashMa…