一个简单的登录注册任务

        写一个注册登录的小任务,为后续自写一个云盘做准备        

       先完成一个小的注册登录的内容来熟悉整个流程,使重点更突出。

前置内容:注册登录

第一步:创建项目。

        这里使用SpringBoot和Mybaties-plus完成这个任务。这两个东西是所谓的框架。简单理解的话就是它们以包、类、函数的形式提供了很多工具,使得我们可以少进行一些简单但繁琐的工作。举例来讲的话,比如我们现在要生一个火堆,如果不用框架,我们就要自己找木头木屑,想办法钻木取火;框架的作用就是给我们提供一个打火机和木头,这样我们只需要用打火机去把木头点燃就可以了。

        在网站https://start.spring.io/中创建这个项目。这个网站创建出的项目会直接帮我们导入好一些需要用的包(框架中的工具),并配置好相关的文件。(新手不建议用IDE创建这种项目,会乱会晕)。选择

  • Spring Web
  • Spring Boot DevTools
  • Spring Data JPA
  • MySQL Driver

依赖,选择Spring Boot 3.3.5。并点击generate生成一个压缩包,解压压缩包。用IDE打开这个项目。

创建完成项目之后在pom.xml文件下找到<dependencies>标签,在他下面加入

		<dependency>
			<groupId>com.baomidou</groupId>
			<artifactId>mybatis-plus-spring-boot3-starter</artifactId>
			<version>3.5.7</version>
		</dependency>

然后右键点击 pom.xml 文件并选择 Maven > Reload Project。这里的目的是添加mybatis-plus依赖。Spring Initializr中并不提供这个依赖,需要我们自己手动导入。

第二步:数据库设计

这这一步中,需要完成使项目可以链接到数据库和在数据库中创建一个user表两个任务

首先我们需要下载并安装mysql(网上很多教程,百度就行)然后在项目中的.properties文件下加入

# 服务器端口
server.port=8080

# 数据源配置
spring.datasource.url=jdbc:mysql://localhost:3306/your_database_name?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC
spring.datasource.username=your_username
spring.datasource.password=your_password
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

# MyBatis-Plus 配置
mybatis-plus.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl

其中三个带your的变量需要自己替换:your_database_name是指数据库的名字。建议为这个小任务新建一个数据库,即在登录数据库之后CREAT一个DATABASE出来,新建的这个DATABASE的名字就是your_database_name(如何登录mysql、如何新建数据库网上都有教程)。your_username和your_password按照自己安装mysql时的设置来。

完成之后就可以在Application文件中点击运行了,正常情况下在这里运行窗口会卡住,卡主就对了。

然后再登录数据库,选中我们创建新数据库(USE your_database_name;)来进入到我们新创建的数据库,执行如下语句

CREATE TABLE user (
    id BIGINT AUTO_INCREMENT PRIMARY KEY, -- 用户ID
    username VARCHAR(50) NOT NULL UNIQUE, -- 用户名
    password VARCHAR(100) NOT NULL,       -- 密码(建议加密存储)
    phone VARCHAR(20) UNIQUE,             -- 手机号
);

作用是创建一个表(TABLE),表中含有ID,用户名、密码和手机号四个列。

第三步:实现后端

下面在启动项目的文件所在的文件夹下新建一个User类,一个Mapper接口。目的是可以直接在这个项目中操控这个表(免去了转到mysql的麻烦)


import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;

@Data
@TableName("user")
public class User {
    @TableId
    private Long id;
    private String username;
    private String password;
    private String phone;
}
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;


@Mapper
public interface UserMapper extends BaseMapper<User> {
}

这里用到了一个东西叫做注解,关于注解可以这样简单理解:注解的作用就是把一个类当做参数,给这个类加上一些额外的方法。比如@Data,他的作用就是给User类加上getset等方法。

接下来再新建两个类和一个接口:

public interface UserService {
    boolean registerUser(User user);
    User getUserById(Long id);
    User login(String username, String password);
}
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

@RestController
@RequestMapping("/user")
public class UserController {

    private final UserService userService;
    @Autowired
    public UserController(UserService userService) {
        this.userService = userService;
    }
    @PostMapping("/register")
    public String register(User user){
        boolean res = userService.registerUser(user);
        if (res){
            return "Registration successful!";
        }
        return "Username already exists!";
    }

    @GetMapping("/login")
    public String login(@RequestParam String username, @RequestParam String password) {
        User user = userService.login(username, password);
        if (user != null) {
            return "Login successful!";
        }
        return "Invalid username or password!";
    }
}
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import org.springframework.stereotype.Service;
@Service //这个注解将UserServiceImpl类注册到Spring容器中,这样UserService在被@Autowired注解时就可以创建这个类的实例
public class UserServiceImpl implements UserService{
    private final UserMapper userMapper;

    public UserServiceImpl(UserMapper userMapper) {
        this.userMapper = userMapper;
    }

    @Override
    public boolean registerUser(User user) {
        QueryWrapper<User> queryWrapper = new QueryWrapper<>();
        queryWrapper.eq("username",user.getUsername());
        if (userMapper.selectOne(queryWrapper) != null){
            return false;
        }
        return userMapper.insert(user) > 0;
    }

    @Override
    public User getUserById(Long id) {
        return userMapper.selectById(id);
    }

    @Override
    public User login(String username, String password) {
        QueryWrapper<User> queryWrapper = new QueryWrapper<>();
        queryWrapper.eq("username", username).eq("password", password);
        return userMapper.selectOne(queryWrapper);
    }
}

这样子我们这个小项目就算完成了。在浏览器中输入localhost:8080/user/login?username=testuser&password=123456

就可以查看项目是否正常运行。

这里有一些小内容解释一下:

  • User类和UserMapper接口相当于数据库,用User来实现数据存储,用UserMapper来实现增删查改等操作
  • UserService定义我们要有哪些方法(这些方法是后端服务要用的,并不是要作用于前端的)
  • UserServiceImpl对定义的方法来具体实现
  • UserController则规定后端要给前端返回什么内容。
本系统包括:做单端、下单端、总后台三端。结合微信辅助流程,严格定制的一套自动化任务平台。 业务流程详细介绍 1.做单端介绍: 1.1做单员可以手动接单,可以一键抢单。 1.2做单员接单后需要在任务倒计时内完成任务(配合微信官方限制辅助时间为10分钟) 1.3做单员所接任务通过后,系统自动发放佣金。 1.4做单员所接任务拒绝后,做单员可选择是否申诉。 1.5做单端具备邀请功能,邀请下级成功做任务后,返佣金比例给上级做单员。 1.6提现+账户明细功能 2.下单端介绍: 2.1下单员通过充值账户余额 2.2下单员设置任务单价,发布任务任务倒计时5分钟(配合微信官方限制辅助时间为10分钟),如3分钟内无人接单,自动退还任务发布费用。 2.3下单员对任务进行审核,若20分钟内未进行审核操作,系统自动判定为通过 2.4下单端具备邀请功能,邀请下级成功发任务后,返任务利润比例给上级下单员。 2.5账户明细功能 3.总后台介绍 3.1系统设置 3.1.2 可设置用户端邀请分成比例 3.1.3 可设置用户端最低提现金额 3.1.4 可设置用户端提现手续费比例 3.1.5 可设置下单端邀请分成比例 3.1.6 可设置下单端最低任务发布金额 3.1.7 可设置下单端任务发布手续费比例 3.2对提出申诉的任务订单进行判定,判定下单员胜诉,下单员退还任务发布金额,判定做单员胜诉,做单员获得佣金。 3.3 提现处理+用户明细功能 3.4全自动任务判定流程 自动刷新的状态如下: 等待确认:提交订单5分钟后自动变成等待确认 超时退款:3分钟内无人接单,系统自动退款 自动完成:20分钟内卡商未确认收货,系统自动完成订单 订单失败:扫码失败时兼职10分钟内未申诉,系统自动订单为失败
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值