【管理系统】注册模块

1. 持久层

1.1 规划需要执行的sql语句

INSERT INTO student (sid, password, salt, name, gender, phone, email, avatar, is_delete, created_user, created_time, modified_user, modified_time) VALUE (#{sid}, #{password}, #{salt}, #{name}, #{gender}, #{phone}, #{email}, #{avatar}, #{isDelete}, #{createdUser}, #{createTime}, #{modifiedUser}, #{modifiedTime})

1.2 设计接口和抽象方法

     /**
     * 插入新的学生数据
     * @param student 学生对象数据
     * @return 插入手影响行数
     */
    Integer insert(Student student);

1.3 sql映射

<insert id="insert">
        INSERT INTO student
            (sid, password, salt, name, gender, phone,
             email, avatar, is_delete, created_user,
             created_time, modified_user, modified_time)
             VALUE
            (#{sid}, #{password}, #{salt}, #{name}, #{gender},
            #{phone}, #{email}, #{avatar}, #{isDelete},
            #{createdUser}, #{createTime}, #{modifiedUser},
            #{modifiedTime})
    </insert>

1.4 单元功能测试

@Test
    public void insert() {
        Student student = new Student();
        student.setSid("001");
        student.setName("高汕大人");
        student.setPassword("3285686");

        Integer result = studentMapper.insert(student);
        System.out.println(result);
    }

2. 业务层

2.1 规划异常

  • 学生注册学号已存在异常SidDuplicatedException
  • 注册插入过程异常InsertException

2.2 设计接口和抽象方法

/**
     * 学生注册接口
     * @param student 注册对象信息
     */
    void reg(Student student);
/**学生注册*/
    @Override
    public void reg(Student student) {
        // 判断学生学号是否已被注册
        Student result = studentMapper.findByStudentsid(student.getSid());
        if (result != null) {
            throw new SidDuplicatedException("学号已被注册!");
        }

        // 生成盐值 对旧密码进行md5加密
        String Oldpassword = student.getPassword();
        String salt = UUID.randomUUID().toString().toUpperCase();
        String md5Password = getMD5Password(Oldpassword, salt);
        student.setPassword(md5Password);
        student.setSalt(salt);

        student.setSid(student.getSid());
        student.setIsDelete(0);
        Date date = new Date();
        student.setCreatedUser(student.getName());
        student.setCreatedTime(date);
        student.setModifiedUser(student.getModifiedUser());
        student.setModifiedTime(date);

        Integer rows = studentMapper.insert(student);
        if (rows != 1) {
            throw new InsertException("插入过程中异常");
        }
    }

2.3 单元测试

@Test
    public void reg() {
        Student student = new Student();
        student.setSid("002");
        student.setPassword("123456");
        student.setName("高汕大人");
        studentService.reg(student);
    }

3. 控制层

3.1 异常处理

  • 学生注册学号已存在异常SidDuplicatedException配置在统一异常处理中
else if (e instanceof SidDuplicatedException) {
            result.setState(4003);
            result.setMessage("学生账号已存在");
        }
  • 注册插入过程异常InsertException配置在统一异常处理中
else if (e instanceof InsertException) {
            result.setState(4004);
            result.setMessage("注册插入过程异常");
        }

3.2 设计请求

/stu/reg
POST
Student student
JsonResult< Void >

3.3 处理请求

@RequestMapping("reg")
    public JsonResult<Void> reg(Student student) {
        studentService.reg(student);
        return new JsonResult<>(OK);
    }

3.4 单元功能测试

在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值