03 动力云客项目之登录功能后端实现

1 准备工作

1.1 创建项目

使用Spring initializr初始化项目
在这里插入图片描述老师讲的是3.2.0, 但小版本之间问题应该不大.

1.2 项目结构

根据阿里巴巴Java开发手册确定项目结构
在这里插入图片描述
在这里插入图片描述

1.3 分层领域模型

【参考】分层领域模型规约:

• DO(Data Object):此对象与数据库表结构一一对应,通过 DAO 层向上传输数据源对象。
• DTO(Data Transfer Object):数据传输对象,Service 或 Manager 向外传输的对象。
• BO(Business Object):业务对象,可以由 Service 层输出的封装业务逻辑的对象。
• Query:数据查询对象,各层接收上层的查询请求。注意超过 2 个参数的查询封装,禁止使用 Map 类来传输。
• VO(View Object):显示层对象,通常是Web向模板渲染引擎层传输的对象。

我们只使用其中的三个,但在大型项目, DTO几乎是必须的:
1、DO(等价于我们的model)
2、Query (controller --> service -->manager --> dao 上一层往下一层传参数)
3、VO(等价于我们的result中的R对象)

即从dao一直到controller返回DAO, controller到前端返回R

1.4 创建R处理结果集

在这里插入图片描述

package com.sunsplanter.result;

import lombok.*;

@Getter
@RequiredArgsConstructor
@NoArgsConstructor
@AllArgsConstructor
public enum CodeEnum {
   

    OK(200, "成功"),

    FAIL(500, "失败"),

    TOKEN_IS_EMPTY(901, "请求Token参数为空"),

    TOKEN_IS_ERROR(902, "请求Token有误"),

    TOKEN_IS_EXPIRED(903, "请求Token已过期"),

    TOKEN_IS_NONE_MATCH(904, "请求Token不匹配"),

    USER_LOGOUT(200, "退出成功"),

    DATA_ACCESS_EXCEPTION(500,"数据库操作失败"),

    ACCESS_DENIED(500, "权限不足")

    ;

    //结果码
    private int code;

    //结果信息
    @NonNull
    private String msg;

}
package com.sunsplanter.result;

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

/**
 * 统一封装web层向前端页面返回的结果
 *
 */
@Builder
@NoArgsConstructor
@AllArgsConstructor
@Data
public class R {
   

    //表示返回的结果码,比如200成功,500失败
    private int code;

    //表示返回的结果信息,比如 用户登录状态失效了,请求参数格式有误.......
    private String msg;

    //表示返回的结果数据,数据可能是一个对象,也可以是一个List集合.....
    private Object data;

    public static R OK() {
   
        return R.builder()
                .code(CodeEnum.OK.getCode())
                .msg(CodeEnum.OK.getMsg())
                .build();
    }

    public static R OK(int code, String msg) {
   
        return R.builder()
                .code(code)
                .msg(msg)
                .build();
    }

    public static R OK(Object data) {
   
        return R.builder()
                .code(CodeEnum.OK.getCode())
                .msg(CodeEnum.OK.getMsg())
                .data(data)
                .build();
    }

    public static R OK(CodeEnum codeEnum) {
   
        return R.builder()
                .code(CodeEnum.OK.getCode())
                .msg(codeEnum.getMsg())
                .build();
    }

    public static R FAIL() {
   
        return R.builder()
                .code(CodeEnum.FAIL.getCode())
                .msg(CodeEnum.FAIL.getMsg())
                .build();
    }

    public static R FAIL(String msg) {
   
        return R.builder()
                .code(CodeEnum.FAIL.getCode())
                .msg(msg)
                .build();
    }

    public static R FAIL(CodeEnum codeEnum) {
   
        return R.builder()
                .code(codeEnum.getCode())
                .msg(codeEnum.getMsg())
                .build();
    }
}

2 后端代码

2.1 登录代码实现

最近更新

  1. TCP协议是安全的吗?

    2024-02-07 23:42:02       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-02-07 23:42:02       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-02-07 23:42:02       19 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-02-07 23:42:02       20 阅读

热门阅读

  1. docker compose部署gitlab 获取初始密码

    2024-02-07 23:42:02       38 阅读
  2. YOLO v8 参数设置,详解cfg/default.yaml

    2024-02-07 23:42:02       29 阅读
  3. jsPDF+html2canvas实现html转pdf下载+打印

    2024-02-07 23:42:02       31 阅读
  4. mysql 数据库基础知识

    2024-02-07 23:42:02       36 阅读
  5. 蓝桥杯基础知识7 vector

    2024-02-07 23:42:02       26 阅读
  6. 2024/2/7 图的基础知识

    2024-02-07 23:42:02       35 阅读
  7. 随身wifi两条命令刷入debian系统

    2024-02-07 23:42:02       31 阅读
  8. eventbus增加个缓存池

    2024-02-07 23:42:02       31 阅读
  9. Linux和Windows文件共享实现方式

    2024-02-07 23:42:02       28 阅读
  10. 绕过安全狗优化

    2024-02-07 23:42:02       31 阅读
  11. opencv中的img格式

    2024-02-07 23:42:02       29 阅读
  12. LLaMA 模型和DeepSpeed 框架联系与使用

    2024-02-07 23:42:02       32 阅读