苍穹外卖-新增员工(一)

本文介绍了项目需求分析中的用户信息处理、数据库表设计,强调了HTTP请求的命名约定,使用DTO进行数据映射,以及如何处理SQL异常、使用ThreadLocal获取线程ID和生成员工ID。还涉及了全局异常处理器的应用和代码完善策略,如处理重复用户名异常和密码加密。
摘要由CSDN通过智能技术生成

新增员工
需求分析和设计
代码开发功能测试
代码完善

首先是**需求分析**
新增包括以下数据信息,用户名手机号,密码所以考虑到用户名唯一,手机号合法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()      移除当前线程的线程局部变量
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值