基于springCloud微服务架构的企业求职系统(未完待续...)

目录

一 概述

二 项目微服务架构拆分

三 模块功能实现

1.seek_user模块实现

1.1登录功能


一 概述

在当前快速变化的商业环境中,企业求职系统需要能够迅速适应市场需求的变化,同时保证高性能和稳定性。采用微服务架构可以显著提升系统的可维护性和可扩展性,从而更好地支持这些需求。

二 项目微服务架构拆分

1.首先我们需要知道大概一个求职系统应该有哪些模块,假如说我前期先拆分为这三个模块Seek_Commen、Seek_Enterprise、Seek_User等等,其中Seek_Commen存放公共工具模块、Seek_Enterprise 企业家模块,Seek_User 求职者模块,如下图,其实你想怎么拆分就怎么拆分,重点是要遵循高内聚低耦合,方便后面拓展功能、管理起来也比较方便,这也是为什么要微服务的一个原因了。

2.配置好父模块Seek_Jobs的pom文件

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.7.12</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.lfj.admin</groupId>
    <artifactId>Seek_Jobs</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>Seek_Jobs</name>
    <description>Seek_Jobs</description>
    <url/>
    <licenses>
        <license/>
    </licenses>
    <developers>
        <developer/>
    </developers>
    <scm>
        <connection/>
        <developerConnection/>
        <tag/>
        <url/>
    </scm>
    <packaging>pom</packaging>
    <modules>
        <module>Seek_User</module>
        <module>Seek_Enterpriser</module>
        <module>Seek_Commen</module>
    </modules>
    <properties>
        <java.version>17</java.version>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <org.projectlombokprojectlombok.version>1.18.20</org.projectlombokprojectlombok.version>
        <spring-cloud.version>2021.0.3</spring-cloud.version>
        <spring-cloud-alibaba.version>2021.0.4.0</spring-cloud-alibaba.version>
        <mybatis-plus.version>3.5.3</mybatis-plus.version>
        <hutool.version>5.8.11</hutool.version>
        <javax.xml.bind.version>2.3.1</javax.xml.bind.version>
        <mysql.version>8.0.23</mysql.version>
        <kaptcha.version>2.3.2</kaptcha.version>
        <javax.servlet.version>3.1.0</javax.servlet.version>
        <fastjson.version>1.2.83</fastjson.version>
        <io.jsonwebtoken.jjwt.version>0.9.0</io.jsonwebtoken.jjwt.version>
        <com.github.pagehelper.version>5.3.2</com.github.pagehelper.version>
        <pagehelper-spring-boot-starter.pagehelper.version>1.4.6</pagehelper-spring-boot-starter.pagehelper.version>
        <guava.version>30.1-jre</guava.version>
        <knife4j.vsersion>4.5.0</knife4j.vsersion>
        <maven-compiler-plugin.version>3.8.1</maven-compiler-plugin.version>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>${org.projectlombokprojectlombok.version}</version>
            <optional>true</optional>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <!--    对依赖包进行管理-->
    <dependencyManagement>
        <dependencies>
            <!--        spring clound-->
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>${spring-cloud.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>

            <!--        spring cloud alibaba-->
            <dependency>
                <groupId>com.alibaba.cloud</groupId>
                <artifactId>spring-cloud-alibaba-dependencies</artifactId>
                <version>${spring-cloud-alibaba.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>

            <dependency>
                <groupId>javax.servlet</groupId>
                <artifactId>javax.servlet-api</artifactId>
                <version>${javax.servlet.version}</version>
            </dependency>
            <dependency>
                <groupId>javax.xml.bind</groupId>
                <artifactId>jaxb-api</artifactId>
                <version>${javax.xml.bind.version}</version>
            </dependency>
            <!--fastjson依赖-->
            <dependency>
                <groupId>com.alibaba</groupId>
                <artifactId>fastjson</artifactId>
                <version>${fastjson.version}</version>
            </dependency>
            <!--jwt依赖-->
            <dependency>
                <groupId>io.jsonwebtoken</groupId>
                <artifactId>jjwt</artifactId>
                <version>${io.jsonwebtoken.jjwt.version}</version>
            </dependency>
            <dependency>
                <groupId>com.baomidou</groupId>
                <artifactId>mybatis-plus-boot-starter</artifactId>
                <version>${mybatis-plus.version}</version>
            </dependency>
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
                <version>${mysql.version}</version>

            </dependency>

            <dependency>
                <groupId>javax.xml.bind</groupId>
                <artifactId>jaxb-api</artifactId>
                <version>${javax.xml.bind.version}</version>
            </dependency>
            <!--        //分页插件-->
            <dependency>
                <groupId>com.github.pagehelper</groupId>
                <artifactId>pagehelper</artifactId>
                <version>${com.github.pagehelper.version}</version>
            </dependency>

            <dependency>
                <groupId>com.github.pagehelper</groupId>
                <artifactId>pagehelper-spring-boot-starter</artifactId>
                <version>${pagehelper-spring-boot-starter.pagehelper.version}</version>
            </dependency>
            <!--hutool工具包-->
            <dependency>
                <groupId>cn.hutool</groupId>
                <artifactId>hutool-all</artifactId>
                <version>${hutool.version}</version>
            </dependency>
            <dependency>
                <groupId>com.google.guava</groupId>
                <artifactId>guava</artifactId>
                <version>${guava.version}</version>
            </dependency>
            <dependency>
                <groupId>com.github.penggle</groupId>
                <artifactId>kaptcha</artifactId>
                <version>${kaptcha.version}</version>
            </dependency>

            <dependency>
                <groupId>com.github.xiaoymin</groupId>
                <artifactId>knife4j-openapi2-spring-boot-starter</artifactId>
                <version>${knife4j.vsersion}</version>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <build>
        <pluginManagement>
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-compiler-plugin</artifactId>
                    <version>${maven-compiler-plugin.version}</version>
                    <configuration>
                        <source>17</source>
                        <target>17</target>
                    </configuration>
                </plugin>

            </plugins>

        </pluginManagement>
    </build>

</project>

以上父模块的配置基本上含盖了本次开发所需要的依赖库,版本可自行更改,然后还需要在子模块中引用,就是需要用那个依赖还是要在子模块的pom文件中添加,子模块不需要指定依赖版本,版本在父模块中控制。

三 模块功能实现

1.seek_user模块实现

首先构建好seek_user模块的基本布局,后续需要加包就添加,大概先这样

1.1登录功能

哈哈,从最简单的开始,登录功能需要用到数据库,所以需要再子模块中引入mybatis-plus,以及验证码工具什么的,如下

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>com.lfj.admin</groupId>
        <artifactId>Seek_Jobs</artifactId>
        <version>0.0.1-SNAPSHOT</version>
    </parent>
    <groupId>com.lfj.seek_user</groupId>
    <artifactId>Seek_User</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>Seek_User</name>
    <description>Seek_User</description>
    <url/>
    <licenses>
        <license/>
    </licenses>
    <developers>
        <developer/>
    </developers>
    <scm>
        <connection/>
        <developerConnection/>
        <tag/>
        <url/>
    </scm>
    <properties>
        <java.version>17</java.version>
    </properties>
    <dependencies>
        <dependency>
            <groupId>com.lfj.admin</groupId>
            <artifactId>Seek_Commen</artifactId>
            <version>0.0.1-SNAPSHOT</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
        </dependency>
        <dependency>
            <groupId>com.github.penggle</groupId>
            <artifactId>kaptcha</artifactId>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>

然后就开始愉快的编码过程了,流程:准备好数据库字段以及字体类等等->写controller层->mapper层->server层->测试,大概的流程就是这样。

数据库用的是mysql,建表语句 以及插入测试数据如下

CREATE TABLE `seek_user` (
  `id` BIGINT(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
  `username` VARCHAR(255) NOT NULL COMMENT '用户名',
  `nickname` VARCHAR(255) DEFAULT NULL COMMENT '昵称',
  `password` VARCHAR(255) NOT NULL COMMENT '密码',
  `status` VARCHAR(10) DEFAULT NULL COMMENT '账号状态(0正常 1停用)',
  `email` VARCHAR(255) DEFAULT NULL COMMENT '邮箱',
  `phone_number` VARCHAR(20) DEFAULT NULL COMMENT '手机号',
  `gender` VARCHAR(10) DEFAULT NULL COMMENT '用户性别(0男,1女,2未知)',
  `avatar` VARCHAR(255) DEFAULT NULL COMMENT '头像',
  `user_type` VARCHAR(10) DEFAULT NULL COMMENT '用户类型(0管理员,1求职者)',
  `created_by` BIGINT(20) DEFAULT NULL COMMENT '创建人的用户id',
  `created_at` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `updated_by` BIGINT(20) DEFAULT NULL COMMENT '更新人',
  `updated_at` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  `deleted` TINYINT(1) DEFAULT 0 COMMENT '删除标志(0代表未删除,1代表已删除)',
  `resume` TEXT DEFAULT NULL COMMENT '求职者简历',
  `skills` TEXT DEFAULT NULL COMMENT '技能列表',
  `education` TEXT DEFAULT NULL COMMENT '教育背景',
  `work_experience` TEXT DEFAULT NULL COMMENT '工作经验',
  `job_intentions` TEXT DEFAULT NULL COMMENT '求职意向',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='求职者信息表';


INSERT INTO `seek_user` (
  `username`, `nickname`, `password`, `status`, `email`, 
  `phone_number`, `gender`, `avatar`, `user_type`, 
  `created_by`, `created_at`, `updated_by`, `updated_at`, 
  `deleted`, `resume`, `skills`, `education`, 
  `work_experience`, `job_intentions`
) VALUES (
  'john_doe', 'John', 'hashed_password', '0', 'john@example.com', 
  '+1234567890', '0', '/path/to/avatar.jpg', '1', 
  1, '2023-01-01 12:00:00', 1, '2023-01-01 12:00:00', 
  0, 'Experienced software engineer with a passion for Java and Python.', 
  'Java, Python, SQL, Git', 'Bachelor of Science in Computer Science from XYZ University', 
  'Worked as a software developer at ABC Corp for 5 years.', 
  'Looking for a senior software engineer position.'
);

INSERT INTO `seek_user` (
  `username`, `nickname`, `password`, `status`, `email`, 
  `phone_number`, `gender`, `avatar`, `user_type`, 
  `created_by`, `created_at`, `updated_by`, `updated_at`, 
  `deleted`, `resume`, `skills`, `education`, 
  `work_experience`, `job_intentions`
) VALUES (
  'jane_smith', 'Jane', 'hashed_password', '0', 'jane@example.com', 
  '+0987654321', '1', '/path/to/avatar.jpg', '1', 
  2, '2023-02-01 12:00:00', 2, '2023-02-01 12:00:00', 
  0, 'Expert in web development and UI/UX design.', 
  'HTML, CSS, JavaScript, React', 'Bachelor of Arts in Graphic Design from DEF College', 
  '3 years experience as a web designer at GHI Studio.', 
  'Seeking a role as a full-stack developer or UI/UX designer.'
);

springboot里面的application.yml配置我就不过多赘述了,自行配置就好了,网上配置很多的。

我的如下,不过你需要修改里面的数据库连接哪些,比如host、端口

server:
  port: 8091
spring:
  application:
    name: Seek_User
#  cloud:
#    nacos:
#      discovery:
#        server-addr: 192.168.142.101:8848
  profiles:
    active: dev
  datasource:
    url: jdbc:mysql://${seek.db.host}:3307/Job_Seekers?characterEncoding=utf-8&serverTimezone=UTC
    driver-class-name: com.mysql.cj.jdbc.Driver
    username: root
    password: ${seek.db.pw}
#  redis:
#    host: localhost
#    port: 6379
  mvc:
    pathmatch:
      matching-strategy: ant_path_matcher

logging:
  level:
    com.lfj.seek_user: debug
  pattern:
    dateformat: HH.mm.ss.SS
  file:
    path: "logs/${spring.application.name}"
mybatis-plus:
  type-aliases-package: com.lfj.seek_user.mapper.*
  configuration:
    map-underscore-to-camel-case: true
    cache-enabled: false
  global-config:
    db-config:
      id-type: assign_id
      update-strategy: not_null
  mapper-locations: classpath*:/mapper/**/*.xml

feign:
  okhttp:
    enabled: true # 开启OKHttp功能

pagehelper:
  helper-dialect: mysql
  reasonable: true
  support-methods-arguments: true
  params: count=countSql



application-dev.yaml

seek:
  db:
    host: 需要改成你自己的
    pw: 123

controller

实体类 用户实体类:UserVo

package com.lfj.seek_user.model.VO;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.io.Serializable;
import java.time.LocalDateTime;

/**
 * @author LFJ
 * @version 1.0
 * @description: 求职者实体类(user) TODO
 * @date 2024/7/23 21:34
 */
@Data
@AllArgsConstructor
@NoArgsConstructor
@TableName(value = "seek_user")
public class UserVo implements Serializable {
    private static final long serialVersionUID = -40356785423868312L;

    /**
     * 主键
     */
    @TableId(value = "id", type = IdType.AUTO)
    private Long id;

    /**
     * 用户名
     */
    private String username;

    /**
     * 昵称
     */
    private String nickname;

    /**
     * 密码
     */
    private String password;

    /**
     * 账号状态(0正常 1停用)
     */
    private String status;

    /**
     * 邮箱
     */
    private String email;

    /**
     * 手机号
     */
    private String phoneNumber;

    /**
     * 用户性别(0男,1女,2未知)
     */
    private String gender;

    /**
     * 头像
     */
    private String avatar;

    /**
     * 用户类型(0管理员,1求职者)
     */
    private String userType;
    /**
     * 求职者简历
     */
    private String resume;

    /**
     * 技能列表
     */
    private String skills;

    /**
     * 教育背景
     */
    private String education;

    /**
     * 工作经验
     */
    private String workExperience;

    /**
     * 求职意向
     */
    private String jobIntentions;

    /**
     * 创建人的用户id
     */
    private Long createdBy;

    /**
     * 创建时间
     */
    private LocalDateTime createdAt;

    /**
     * 更新人
     */
    private Long updatedBy;

    /**
     * 更新时间
     */
    private LocalDateTime updatedAt;

    /**
     * 删除标志(0代表未删除,1代表已删除)
     */
    private Integer deleted;


}

登录

package com.lfj.seek_user.controller.Login;


import com.Seek.commen.utils.ResponseResult;
import com.lfj.seek_user.model.VO.UserVo;
import com.lfj.seek_user.service.Impl.SeekLoginServerImpl;
import com.lfj.seek_user.service.SeekLoginServer;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * @author LFJ
 * @version 1.0
 * @description: TODO
 * @date 2024/7/23 21:31
 */
@RestController
@RequestMapping("user")
public class UserController {
    @Autowired
    private SeekLoginServer loginServer;
    @PostMapping("login")
    public ResponseResult login(@RequestBody UserVo user){
        return loginServer.login(user);
    }
}
package com.lfj.seek_user.controller.Login;

import com.Seek.commen.utils.ResponseResult;
import com.lfj.seek_user.model.VO.UserVo;
import com.lfj.seek_user.service.SeekLoginServer;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * @author LFJ
 * @version 1.0
 * @description: TODO
 * @date 2024/7/24 21:52
 */
@RestController
@RequestMapping("user")
public class RegisterController {
    @Autowired
    private SeekLoginServer loginServer;
    @GetMapping("register")
    public ResponseResult register(@RequestBody UserVo user){
        return loginServer.register(user);
    }
}
package com.lfj.seek_user.controller.Login;

import com.Seek.commen.utils.RedisCache;
import com.Seek.commen.utils.ResponseResult;
import com.google.code.kaptcha.Producer;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

import javax.imageio.ImageIO;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.awt.image.BufferedImage;
import java.io.ByteArrayOutputStream;
import java.io.IOException;

@RestController
@Slf4j
public class CaptchaController {

    @Autowired
    private Producer captchaProducer;
    @Autowired
    private RedisCache redisCache;
    @GetMapping("captcha")

    public void generateCaptcha(HttpServletResponse response,HttpSession httpSession) throws IOException {
        response.setHeader("Cache-Control", "no-store, no-cache");
        response.setContentType("image/jpeg");
        // 生成验证码文本
        String captchaText = captchaProducer.createText();
        // 生成并输出验证码图片
        BufferedImage image = captchaProducer.createImage(captchaText);
        // 将图片写入响应流
        ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
        ImageIO.write(image, "jpg", outputStream);
        byte[] captchaData = outputStream.toByteArray();
        httpSession.setAttribute("captchaText", captchaText);
//        将数据流存入redis缓存
        redisCache.setCacheObject("captchaText" ,captchaText);
        // 输出到HTTP响应
        response.getOutputStream().write(captchaData);
        response.getOutputStream().flush();
//        return new ResponseResult(200,"Success",captchaData);

    }
    @PostMapping("verify-captcha")
    public ResponseResult verifyCaptcha(@RequestParam(value = "userInputCaptcha") String userInputCaptcha, HttpSession httpSession) {
        String imgCaptcha = redisCache.getCacheObject("captchaText");
        if (imgCaptcha != null && imgCaptcha.equalsIgnoreCase(userInputCaptcha)) {
            // 验证成功,清除session中的验证码
            httpSession.removeAttribute("captchaText");
            redisCache.deleteObject("captchaText");
            return new ResponseResult(200, "Success");

            // 执行其他业务逻辑...
        } else {
            // 验证失败,提示错误信息
            redisCache.deleteObject("captchaText");
            return new ResponseResult(304, "验证码错误");
        }
    }
}

最后一个是验证码 接口,需要配置它的配置类 如下

package com.lfj.seek_user.config;

import com.google.code.kaptcha.impl.DefaultKaptcha;
import com.google.code.kaptcha.util.Config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import java.util.Properties;

@Configuration
public class KaptchaConfig {

    @Bean
    public DefaultKaptcha producer() {
        DefaultKaptcha defaultKaptcha = new DefaultKaptcha();
        Properties props = new Properties();
        // 设置Kaptcha的基本属性
        props.setProperty("kaptcha.image.width", "90"); // 设置图片宽度
        props.setProperty("kaptcha.image.height", "40"); // 设置图片高度
        // 设置Kaptcha的基本属性,如边框、文字、颜色、字体等
        props.setProperty("kaptcha.textproducer.font.names", "Arial,Courier,cmr10,宋体,楷体,微软雅黑");
               // 设置验证码字体大小
        props.setProperty("kaptcha.textproducer.font.size", "30"); // 这里设置字体大小为40像素
//        props.setProperty("kaptcha.border", "yes");
        props.setProperty("kaptcha.textproducer.char.length", "4");
        props.setProperty("kaptcha.noise.count", "0"); // 关闭噪音点
        props.setProperty("kaptcha.obscurificator.impl", "com.google.code.kaptcha.impl.ShadowGimpy"); // 或选择无扭曲的实现
        props.setProperty("kaptcha.background.clear.from", "white");
        props.setProperty("kaptcha.background.clear.to", "gray");
        props.setProperty("kaptcha.textproducer.char.string", "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz");
        // 更多配置...
        Config config = new Config(props);

        defaultKaptcha.setConfig(config);
        return defaultKaptcha;
    }


}

mapper层

package com.lfj.seek_user.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;

import com.lfj.seek_user.model.VO.UserVo;

public interface SeekUserMapper extends BaseMapper<UserVo> {
}

注意这里我没加@mapper是因为我apllication启动项哪里加了包扫描位置

server层

package com.lfj.seek_user.service;

import com.Seek.commen.utils.ResponseResult;
import com.baomidou.mybatisplus.extension.service.IService;
import com.lfj.seek_user.model.VO.UserPo;
import com.lfj.seek_user.model.VO.UserVo;

public interface SeekLoginServer extends IService<UserVo> {
    ResponseResult login(UserVo user);
    ResponseResult register(UserVo user);
}

实现impl包

package com.lfj.seek_user.service.Impl;

import com.Seek.commen.utils.ResponseResult;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.lfj.seek_user.mapper.SeekUserMapper;
import com.lfj.seek_user.model.VO.UserPo;

import com.lfj.seek_user.model.VO.UserVo;
import com.lfj.seek_user.service.SeekLoginServer;
import org.springframework.stereotype.Service;

import java.util.HashSet;
import java.util.Objects;

/**
 * @author LFJ
 * @version 1.0
 * @description: TODO
 * @date 2024/7/23 22:30
 */
@Service
public class SeekLoginServerImpl extends ServiceImpl<SeekUserMapper, UserVo> implements SeekLoginServer {

    @Override
    public ResponseResult login(UserVo user) {
        UserVo byId = getById(user.getId());
        if (Objects.isNull(byId)){
            return new ResponseResult(400,"用户名不存在");
        }
        if (!user.getUsername().equals(byId.getUsername())){
            return new ResponseResult(400,"Username error");
        }
        if (!user.getPassword().equals(byId.getPassword())){
            return new ResponseResult(400,"Password error");
        }
        return new ResponseResult(200,"Success");
    }

    @Override
    public ResponseResult register(UserVo user) {
        if (Objects.isNull(user)){
            throw new RuntimeException("User is null");
        }
        try {
            save(user);
        } catch (Exception e) {
            throw new RuntimeException("Register存入数据库有误!!!",e);
        }
        return new ResponseResult<>(200,"Success");
    }
}

然后就可以用postman测试了

测试登录接口

测试验证码接口

测试结果如下

如此上面的登录,以及验证码功能都没问题了。

还未完成,未完待续....

  • 25
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值