苍穹外卖+git开源

2023-12-14 18:30:05

搁置了很久重新开始学? ? ? ??

为了学习方便,苍穹外卖的前后端代码已放至git开源。

源代码-->sky-take-out: 苍穹外卖

git学习-->Git基础使用-CSDN博客

后端接口员工管理和分类管理模块

新增员工

? ? ? ? 添加员工表单分析,添加的表单账号、手机号、身份证都是码唯一的,写后端代码时需要校验。登录之后密码为初始密码123456,登录之后自行修改密码。数据提交格式为json,根据/admin和/user来判断请求是谁发出的,employee员工表,字段根据自身需要设置

? ? ? ? 如果前端提交的数据和实体类对应的属性相差较大,建议使用DTO来封装数据使用。功能和实体类是一样的,只是DTO封装的属性表少了。

? ? ? ? 项目的mvc模式,前端传数据过来,走哪里会有一个路径,而这个路径在项目中的control层,走到control层,这一层又会去调service层(主要写业务逻辑),service调mapper层,mapper(写sql)调数据库获取数据。

/*
    * 新增员工
    * 响应的数据是json,所以需要加注解@RequestBody
    * */
    @PostMapping
    @ApiOperation("新增员工")
    public Result save(@RequestBody EmployeeDTO employeeDTO){
        log.info("新增员工:{}",employeeDTO);
        employeeService.save(employeeDTO);
        return Result.success();
    }

cotronl层调employeeService接口的save方法,save方法需要它的实现类去实现具体操作

/**
     * 新增员工
     * @param
     * @return
     */
    void save(EmployeeDTO employeeDTO);

/**
     * 新增员工
     * @param
     * @return
     */
    @Override
    public void save(EmployeeDTO employeeDTO) {
        Employee employee = new Employee();

        //employee.setName(employeeDTO.getName());
        // 对象属性拷贝简化代码BeanUtils.copyProperties(employeeDTO,employee);从左往右拷
        BeanUtils.copyProperties(employeeDTO,employee);

        //设置账号的状态,默认状态1:正常,0:预定
        employee.setStatus(StatusConstant.ENABLE);
        //设置密码,默认:123456,设置成md5加密
        employee.setPassword(DigestUtils.md5DigestAsHex(PasswordConstant.DEFAULT_PASSWORD.getBytes()));

        //设置当前记录的创建时间和修改时间
        employee.setCreateTime(LocalDateTime.now());
        employee.setUpdateTime(LocalDateTime.now());

        //设置当前创建人和修改人ID,先写死,后期通过技术实现
        employee.setCreateUser(10l);
        employee.setUpdateUser(10l);

        employeeMapper.insert(employee);

    }

实现类主要封装了前端传过来的数据,前端传的数据属性和数据库表对应,前端没有的数据通过set去设置之。

/**
     * 插入员工
     * @param
     *
     * @return
     */
    @Insert("insert into employee (name,username,password,phone,sex,id_number,create_time,update_time,create_user,update_user,status)"+
            "values"+
            "(#{name},#{username},#{password},#{phone},#{sex},#{idNumber},#{createTime},#{updateTime},#{createUser},#{updateUser},#{status})"

    )
    void insert(Employee employee);

这里可以通过注解写sql也可以通过xml配置sql

TrheadLocal为每个线程提供一份单独的空间,具有线程的隔离效果,只有在线程内才能获取到对应的值,线程外不能访问。前端的每一次请求都是一次线程访问,线程贯穿用到接口,TrheadLocal三个主要方法:setCurrentId、getCurrentId、removeCurrentId。

问题:如何在service层获取操作者的id?

答:可在过滤器jwttoken中set,当线程走到service层时get即可获取,如下图:

分页查询

首先看需求分析,在接口管理上可以看到需要传上面参数,响应什么参数。

接口网址:YApi Pro-高效、易用、功能强大的可视化接口管理平台

代码直接荡项目看。。

这里时间格式不对,可以通过注解和配置springmvc消息转换器的解决,注解只是局部的,而配置消息转换器是全局的。注解直接在属性头上加上时间格式即可,如下图:

配置需要到配置类下,知识点请看注释,基础不好这里也还不是很明白。

启用禁用员工账号?

看代码把,不想写啦

文章来源:https://blog.csdn.net/qq_65225435/article/details/134854684
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。