搁置了很久重新开始学
为了学习方便,苍穹外卖的前后端代码已放至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*/@Overridepublic 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消息转换器的解决,注解只是局部的,而配置消息转换器是全局的。注解直接在属性头上加上时间格式即可,如下图:
配置需要到配置类下,知识点请看注释,基础不好这里也还不是很明白。
启用禁用员工账号
看代码把,不想写啦