瑞吉外卖Day02-1新增员工
1.需求分析
页面功能分析:后台系统中可以管理员工信息,通过新增员工来添加后台系统用户。点击【添加员工】按钮,跳转到新增页面如下
2.数据模型
2.1数据模型分析
新增员工,其实就是将我们新增页面录入的员工数据插入到employee。注意,表中对应username字段加入了唯一约束,因为username是员工登录账号,必须是唯一的。
3.代码开发
{
log.info("新增员工,员工信息:{}", employee.toString());
//1.设置初始密码123456,需要进行md5加密
employee.setPassword((DigestUtils.md5DigestAsHex("123456".getBytes())));
//创建时间,更新时间,设置为当前时间
employee.setCreateTime(LocalDateTime.now());
employee.setUpdateTime(LocalDateTime.now());
//创建人,既当钱登陆用户
//获取当前登陆用户的id
Long empId=(Long) request.getSession().getAttribute("employee");
employee.setCreateUser(empId);
//最后更新人
employee.setUpdateUser(empId);
//保存
employeeService.save(employee);
return R.success("新增员工成功");
}
3username是唯一的,需要解决在添加时账号重复问题,采用异常处理(全局异常)
package com.wxw.reggie.common;
/**
* 全局异常处理
*/
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
import java.sql.SQLIntegrityConstraintViolationException;
@Slf4j
@ResponseBody
@ControllerAdvice(annotations = {RestController.class, Controller.class})
public class GlobalExceptionHandler {
/**
* * 全局异常处理器
* 基于代理
* @ControllerAdvice() :通知 ,拦截哪些controller
* @ResponseBody :方法返回JSON数据
* @ExceptionHandler() :里面是要处理的哪种异常
*/
@ExceptionHandler(SQLIntegrityConstraintViolationException.class)
public R<String> exceptionHandler(SQLIntegrityConstraintViolationException ex){
log.error(ex.getMessage());
if(ex.getMessage().contains("Duplicate entry")){
String[] split=ex.getMessage().split(" ");
String msg="账号"+split[2]+"已存在";
return R.error(msg);
}
return R.error("未知错误");
}
}
3.2.2 Service层
package com.wxw.reggie.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.wxw.reggie.entity.Employee;
public interface EmployeeService extends IService<Employee> {
}
小结
前端页面发送请求,提交参数
后端服务处理,给前端页面响应数据