syf的开发笔记-7 使用场景影响的功能设计

今天写了一个和OA对接的接口

功能是OA审批最后一步触发标注平台创建任务

一开始只是写了个很朴素的创建任务的接口

但是被朝滨提醒这个接口要幂等

然后就增加了编号的唯一索引

但是这样也不是很符合业务场景

因为有可能OA那边触发之后 平台这边创建成功

但是OA没收到(由于未知原因

这样点第二次的话就会失败 这样就永远成功不了了

毕竟是两个平台对接 要考虑这种比较特殊的情况

所以又进行了一次修改

在捕获到err的时候 判断一下是不是mysql的dup enter的err

如果是的话就返回ok

这样既保证了幂等 有保证了接口可以重复调用成功

 

按理说这个dup enter返回ok是不对的

但是这个接口是OA到最后一步才会触发

流程上保证了这个数据一定是对的

所以可以返回ok

 

因此在完成一个功能的时候

不仅要考虑代码上的正确性

功能上符合需求场景也是很重要的

 

还有一些习惯的优化

比如null会影响索引的效率

如果用非空 默认是空字符串的形式

可能就比留空的字段索引效果要好

 

关于索引

一般都是说数据的离散程度在10%-15%左右用索引效果才最好

posted @ 2020-04-20 21:01  良将ℓ  阅读(135)  评论(0编辑  收藏  举报