今天写了一个和OA对接的接口
功能是OA审批最后一步触发标注平台创建任务
一开始只是写了个很朴素的创建任务的接口
但是被朝滨提醒这个接口要幂等
然后就增加了编号的唯一索引
但是这样也不是很符合业务场景
因为有可能OA那边触发之后 平台这边创建成功
但是OA没收到(由于未知原因
这样点第二次的话就会失败 这样就永远成功不了了
毕竟是两个平台对接 要考虑这种比较特殊的情况
所以又进行了一次修改
在捕获到err的时候 判断一下是不是mysql的dup enter的err
如果是的话就返回ok
这样既保证了幂等 有保证了接口可以重复调用成功
按理说这个dup enter返回ok是不对的
但是这个接口是OA到最后一步才会触发
流程上保证了这个数据一定是对的
所以可以返回ok
因此在完成一个功能的时候
不仅要考虑代码上的正确性
功能上符合需求场景也是很重要的
还有一些习惯的优化
比如null会影响索引的效率
如果用非空 默认是空字符串的形式
可能就比留空的字段索引效果要好
关于索引
一般都是说数据的离散程度在10%-15%左右用索引效果才最好