新增员工
需求分析和设计
代码开发功能测试
代码完善
首先是**需求分析**
新增包括以下数据信息,用户名手机号,密码所以考虑到用户名唯一,手机号合法11位身份证号18位
这样默认密码都是123456然后登陆后可以修改
齐次是数据库表的设计包含哪些属性
本项目约定
管理端发出的请求,统一使用 /admin 作为前缀
用户端发出的请求,统一使用 /user 作为前缀
注意:当前端提交的数据和实体类中对应的属性差别比较大时,建议使用DTO来封装数据
虽然传过来的参数是DTO但是还是建议用实体类
直接转换成实体类 Employee employee =new Employee();
在传过来的对象发现dto和实体类的属性名一致,就可以用对象属性拷贝就不用一个一个 employee.setName(employeeDTO.getName());
属性对象拷贝:Spring内部提供的BeanUtils.copyProperties(emploeeDTO,employee);
前面相当于是原,后面相当于是目标。DTO拷贝给后者 前提是属性名字是一样的,个数可以参差,但是还需手动设置 ?这里有个悬念状态常量拿过来直接用
关于这个状态1是启动,0是禁用。但在设置的时候需要用到常量类去调用这个属性性值1,后期如果需要修改,直接改常量类即可
在common的constant的StatusConstant
不止员工有启用禁用,后期菜品也有起售停售
手动设置密码默认的123456,还要加密employee.setPassword(DigestUtils.md5DigestAsHex(PasswordConstant.DEFAULT_PASSWORD.getBytes()));这里密码123456同样用常量类
这里关于创建者id获取不到先写死一个值,后期再改成当前用户的id
然后employeeMapper inser(employee);
关于sql补全代码提示设置language的SQLDialects
功能测试方式:
通过接口文档测试
通过前后端联调测试
代码完善
程序存在的问题
**录入的用户名已存在,抛出异常后没有处理**
新增员工时,创建人id和修改人id设置为了固定值
server-handler-globalex全局异常处理器,来抓取重复username用户名的异常处理
java.sql.SQLIntegrityConstraintViolationException: Duplicate entry 'asdasd' for key 'employee.idx_username'
异常类型SQL~………… 写一个重载的异常处理方法
异常信息获取 然后存储在message getMessage() if(message.contains("Duplicate entry")).
查看message发现username在第三个,是用空格隔开用split装进数组
String[] split=message.split(" ");
这里注意一点,小心令牌过期
**获得新增员工的id**
Thread.currentThread().getid()获得当前线程id
ThreadLocal 并不是一个Thread,而是Thread的局部变量。
ThreadLocal为每个线程提供单独一份存储空间,具有线程隔离的效果,只有在线程内才能获取到对应的值,线程外则不能访问。
ThreadLocal常用方法 封装到了工具类Base
public void set(T value) 设置当前线程的线程局部变量的值
public T get() 返回当前线程所对应的线程局部变量的值
public void remove() 移除当前线程的线程局部变量